我在使用php下载文件时遇到问题。它一直在工作,直到我最近在usb棒上安装了我的网络服务器,以便在上线之前测试一些新的修改。
一切正常,直到我在USB记忆棒上测试它,但是从usb记忆棒运行服务器之后我能够下载一个文件,但它是0字节。
我使用的是一种相当标准的下载技术,已在互联网上记录:
//test if a parameter was passed
if (isset($_GET['download'])) {
if (!empty($_GET['download'])) {
$files = $_GET['download'];
download($files);
}
}
//download function
function download($files){
if(!file_exists($files)){
die('Error');
}else{
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename='.basename($path));
header('Content-Type: application/octet-stream');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
ob_start();
flush();
readfile($files);
exit;
}
}
我相信检查文件是否存在行会阻止下载存在的文件的能力......但是我无法下载空文件。
目前我不相信它可能是一个特权问题但是由于文件确实存在于usb和harddrive上而无法验证在线查看所以它可能通过测试但是不允许从usb读取?
答案 0 :(得分:1)
您使用错误的变量来检查文件大小,因此您总是告诉收件人大小为零。
您应该filesize($files)
。