我正在尝试为我的网站制作一个php强制下载脚本来获取zip文件。我知道文件路径是正确的,脚本生成的链接会返回到文件本身,但是使用脚本找不到文件,如果没有错误检查,它会下载一个损坏的文件。我的代码如下。
<?php
session_start();
$file='http://www.myurlgoeshere/'.$_SESSION['FilePath'];
if (headers_sent()) {
echo 'HTTP header already sent';
} else {
if (!is_file($file)) {
header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');
echo 'File not found - '.$file;
} else if (!is_readable($file)) {
header($_SERVER['SERVER_PROTOCOL'].' 403 Forbidden');
echo 'File not readable';
} else {
header($_SERVER['SERVER_PROTOCOL'].' 200 OK');
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: Binary");
header("Content-Length: ".filesize($file));
header("Content-Disposition: attachment; filename=\"".basename($file)."\"");
readfile($file);
exit;
}
}
?>
虽然来自$ file的链接echod可以直接使用,但我找不到404。
我做错了什么或是服务器端问题吗?
干杯,
迪伦
答案 0 :(得分:2)
目前您文件的路径是:
$file='http://www.myurlgoeshere/'.$_SESSION['FilePath'];
实际上它应该是服务器上文件的路径。例如:
$file='/var/www/html/domain.com/public_html/downloads/file_to_download.zip';