So I am using PHP headers to force download a file, but when the file is saved it gets corrupted because for whatever reason the HTML code from the download page is also added into the file code/contents:
and here is my code that forces the download, I also downloaded the same file straight from my server (FTP) and it does not have this in its file code, so I know it has to be the following code causing the problem:
header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename={$qfile['rfname']}"); header("Content-Type: application/zip"); header("Content-Transfer-Encoding: binary"); readfile($file['dl_path']);
I’ve looked around but I don’t see anything pertaining to this, would anybody have an idea as to why this could be happening?
Advertisement
Answer
Like Barmar said, I needed to exit();
/die();
after the function readfile();
.
So the fix would look like:
header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename={$qfile['rfname']}"); header("Content-Type: application/zip"); header("Content-Transfer-Encoding: binary"); readfile($file['dl_path']);s // die(); - Either one