我正在使用下面的代码从服务器下载mp3文件。该代码在我的本地系统(Windows操作系统)中正常工作。PHP文件下载在Linux中不起作用
但是,当我将代码移动到服务器(Linux)时,出现文件未找到错误。我相信,文件路径是否正确,文件是可读
if ($fd = fopen ($filePath, "r")) {
$fsize = filesize($filePath);
$path_parts = pathinfo($filePath);
$ext = strtolower($path_parts["extension"]);
switch ($ext) {
case "mp3":
header("Content-type: audio/mpeg"); // add here more headers for diff. extensions
header("Content-Disposition: attachment; filename=\"".$originalFileName."\""); // use 'attachment' to force a download
break;
default;
header("Content-type: application/octet-stream");
header("Content-Disposition: filename=\"".$originalFileName."\"");
}
header("Content-length: $fsize");
header("Cache-control: private"); //use this to open files directly
while(!feof($fd)) {
$buffer = fread($fd, 2048);
echo $buffer;
}
}
fclose ($fd)
2012-05-23
codlib
+1
我经历过这样的事情,问题是与文件名称,如果我没有错,Linux是区分大小写的文件扩展名,所以你试图访问文件'bla.JPG'与'bla.jpg'完全不同,请检查这个 –
+0
你从哪里得到错误,fopen失败? –
+1
也可能存在一些文件权限问题。检查下用户httpd运行和什么权限分配/所有者到您要下载的文件 –