我需要读取一个文件(总是图像)来下载它,但它总是被破坏。
$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<?
html标记显示图片,没有任何问题; begin
,img
和S:/PATH/TO/ART2770.jpg
也无法返回有效文件。我正在使用 Windows 7 64位, PHP版本5.3.5 , Xampp 1.7.4 和 Internet Explorer 11 (必须在IE上工作,无需在其他浏览器上工作)。
答案 0 :(得分:0)
header('Content-Type: $ctype');
将放出Content-Type: $ctype
尝试header("Content-Type: $ctype");
或header('Content-Type: '.$ctype);
另外:确保<?php
答案 1 :(得分:0)
我认为输入网络路径的正确方法是 \\ PATH \ TO \ ART2770.jpg ,甚至没有提及网络S:
信。