使用PHP强制下载文件:已损坏的文件,尝试了几种解决方案

使用PHP强制下载文件:已损坏的文件,尝试了几种解决方案,php,file,download,Php,File,Download,这已经发布了,但我已经尝试了很多在SO和其他网站上找到的解决方案(比如:) 我基本上有: { $filePath = '../public/myfile.png'; $fileName = basename($filePath); $fileSize = filesize($filePath); if (!is_file) { die("File not found"); } else {

这已经发布了,但我已经尝试了很多在SO和其他网站上找到的解决方案(比如:)

我基本上有:

{       
    $filePath = '../public/myfile.png';
    $fileName = basename($filePath);
    $fileSize = filesize($filePath);


    if (!is_file) {
        die("File not found");
    } else {                        
        header("Content-Description: File Transfer");
        header('Content-Type: application/octet-stream');
        header("Content-Disposition: attachment; filename= " . $fileName);
        header("Content-Transfer-Encoding: binary");
        readfile($filePath);
    }
}
文件被识别并下载,但.PNGs为空,.DOCs已损坏(Word要求我修复该文件,然后就可以了)。我也试过PDF,没问题

我真的把所有种类的选项(Pragma,缓存控制,过期,内容长度等),仍然下载的文件,但在某种程度上损坏

你有过我的问题吗?请考虑我在IIS 7.5


提前感谢

使用纯文本编辑器打开下载的文件,如。在顶部你会发现一个PHP错误通知,它会告诉你哪里出了问题


错误可能是“会话已发送”。然后添加
ob_start()在脚本的开头。

如果已调试,请尝试使用文本编辑器打开其中一个损坏的文件,查看是否有错误。打印的大小是否错误?这可能是腐败的主要原因;另一个是php警告哦,我的。。。“使用未定义常量is_file-假定‘is_file’”,我忘记了函数中的文件路径!好的,我需要停一下…:-)非常感谢,你刚刚救了我一天!您可能还想使用此技巧查看文件开头是否有空格。它将阻止图像正确加载到photoshop以外的所有内容中。