问题描述
已发布,但我已经尝试了许多在SO和更多的解决方案(如下所示:)
This has been posted, but I've tried lot of solutions found on SO and more (like this: http://davidwalsh.name/php-force-download)
我基本上是这样的:
{
$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);
}
}
文件被识别和下载,但是.PNG是空的和.DOCs已损坏(Word要求我修复文件,那就没关系)。我也尝试过PDF,而且没有问题。
Files are recognized and downloaded, but .PNGs are empty and .DOCs are corrupted (and Word asks me to fix the file, then it's ok). I have tried also PDFs, and no problem with that.
我尝试将所有选项(Pragma,Cache-Control,Expires,Content-Length等) ),仍然下载的文件,但以某种方式损坏...
I trues to put all sort of options (Pragma, Cache-Control, Expires, Content-Length, etc.), still downloaded files but corrupted in some way...
你有没有我的问题?请考虑我在IIS 7.5上
Did you ever had my problem? Please consider I'm on IIS 7.5
提前感谢
推荐答案
使用纯文本编辑器打开下载的文件,如。在顶部你会发现一个PHP错误通知,它会告诉你出了什么问题。
Open the downloaded files with a plain text editor like Notepad++. At the top you will find a PHP Error notice, it will tell you what's going wrong.
错误可能是会话已发送。然后在脚本开头添加 ob_start();
。
The error is probably "session already send". Then add ob_start();
at the beginning of your script.
这篇关于强制文件下载与PHP:损坏的文件,已经尝试了几个解决方案的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!