【发布时间】:2016-02-26 20:43:34
【问题描述】:
我需要读取一个文件(总是一个图像)来下载它,但它总是损坏。
$path = 'S:\PATH\TO\ART2770.jpg';
$file = 'ART2770.jpg';
$filename = basename($file);
$file_extension = strtolower(substr(strrchr($filename,"."),1));
switch( $file_extension ) {
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpeg"; break;
default:
}
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($path)) . ' GMT');
header('Accept-Ranges: bytes'); // Allow support for download resume
header('Content-Length: ' . filesize($path)); // File size
header('Content-Encoding: none');
header('Content-Type: '.$ctype);
header('Content-Disposition: attachment; filename=' . $filename); // Make the browser display the Save As dialog
readfile($path);
exit;
我尝试过的:
- 这不是
safe_mode问题,因为它已经关闭了; - 这不是
BOM问题,因为我已经检查过了; - 它不是代码末尾的
?>\n或某种空格,因为我已经检查过了; - 编辑:它不是
\n<?或代码的begin中的某种空白,因为我已经检查过了; - 我可以使用
imghtml 标记显示图像,没有任何问题; - 我拥有目标文件夹的所有权限;
-
S:/PATH/TO/ART2770.jpg、S:\\PATH\\TO\\ART2770.jpg和file:///S:/PATH/TO/ART2770.jpg也无法返回有效文件。
我正在使用 Windows 7 64 位、PHP 版本 5.3.5、Xampp 1.7.4 和 Internet Explorer 11 (必须在IE上工作,不需要在其他浏览器上工作)。
【问题讨论】:
-
你有这个正常吗:header('Content-Type: application/pdf');并且您正在尝试显示 JPEG?
-
糟糕。已更正。还是不行。
-
试试
$path = 'S:\\PATH\\TO\\ART2770.jpg'; -
谢谢,但也不行。将添加到我的问题
-
第一行代码之前是什么?第一个 之前的任何空格
标签: php windows file networking internet-explorer-11