PHP:网络中的文件损坏了?

时间:2016-02-26 20:43:34

标签: php windows file networking internet-explorer-11

我需要读取一个文件(总是图像)来下载它,但它总是被破坏。

$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;

我尝试了什么:

  1. safe_mode问题,因为它已经关闭;
  2. <{1}}问题,因为我已经检查过了;
  3. 代码末尾的 BOM或某种空格,因为我已经检查了它;
  4. 编辑: <{1}}或代码?>\n中的某种空格,因为我已经检查了它;
  5. 可以使用\n<? html标记显示图片,没有任何问题;
  6. 我拥有目标文件夹中的所有权限;
  7. beginimgS:/PATH/TO/ART2770.jpg也无法返回有效文件。
  8. 我正在使用 Windows 7 64位 PHP版本5.3.5 Xampp 1.7.4 Internet Explorer 11 (必须在IE上工作,无需在其他浏览器上工作)。

2 个答案:

答案 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:信。