I’m trying to implement an indirect download through PHP. On the client side I verify if the downloaded file is correct or not using md5.
When I download the file directly (http://server/folder/file.apk) I get the same md5 checksum as on the file system, but when I download it via the PHP script (http://server/some_page.php) I get a totally different checksum. Why?
Here’s my PHP script:
<?php
$name_file="test2.apk";
$path="/home/user/public_html/apk/";
$dimension_file=(string)filesize($name_file);
header("Content-Type: application/vnd.android.package-archive ; name=".$name_file);
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$dimension_file);
header("Content-Disposition: inline; filename=".$name_file);
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: private");
header("Pragma: public");
readfile($path.$name_file);
?>
I found the error:
i was retrieving the size using only the name of file instead of using the full path
the error was hidden from
and the php error response added to the content of the downloaded file.
So i suggest to who has this kind of problems to comment the “Content-Type” while debugging to see if there are some errors in the php code and when all code seems to work re-enable the “Content-Type” header.
On my server spaces in the code before the
has no influence on the checksum
Thanks to Vladimir and Rocket for good practice tips