我有一个脚本需要从它所在的同一文件夹下载现有的.zip文件。但是,无论我做什么,下载大小始终为0 kb,并且会触发“无效文件”警报。
我可以毫无问题地在Windows 7中打开.zip, filesize 会返回正确的值, is_readable 会返回true。我在代码所在的服务器上拥有完全权限,并且在我的本地计算机上工作。
以下是我的代码。
<?php
ini_set('max_execution_time', 0);
ini_set("memory_limit","1024M");
$numCatalog = "19482";
$zip_file_name = $numCatalog.'.zip';
if (!file_exists($zip_file_name)) {
echo "File don't exist!";
exit;
} elseif (!is_readable($zip_file_name)) {
echo "Can't read file!";
exit;
} elseif (filesize($zip_file_name) == 0) {
echo "Invalid file!";
exit;
} else {
ob_get_clean();
header($_SERVER['SERVER_PROTOCOL'].' 200 OK');
header("Pragma: public");
header("Expires: 0");
header("Accept-Ranges: bytes");
header("Connection: keep-alive");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-type: application/zip");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=\"".basename($zip_file_name)."\"");
header('Content-Length: '.filesize($zip_file_name));
header("Content-Transfer-Encoding: binary");
ob_flush(); flush();
readfile($zip_file_name);
exit;
}
?>
我尝试了很多类型的标题,使用 fopen ,使用** echo self :: url_get_contents **,什么都没有用。 .zip超过700 Mb,没有 php.ini 更改有任何区别......