我有一个问题已经上升了很多次,但我似乎无法找到我的解决方案!我正在尝试向客户端发送一个pdf文件,而不是在浏览器中打开它,文件下载,但是当我打开它时它已损坏,并且丢失了原始文件中的相当多的字节。我已经尝试了几种下载文件的方法,但我只会向您展示我使用的最新版本,并希望获得一些反馈。强制下载一个PDF文件,损坏的文件
我也在文本编辑器中打开了下载的PDF,并且在顶部没有php错误,我可以看到!我也知道,readfile()更快,但为了测试的目的,我非常渴望得到任何工作,所以我使用while(!feof())方法!
反正足够的散漫,继承人的代码(从why my downloaded file is alwayes damaged or corrupted?拍摄):
$file = __DIR__ . '/reports/somepdf.pdf';
$basename = basename($file);
$length = sprintf("%u", filesize($file));
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $basename . '"');
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $length);
ob_clean();
set_time_limit(0);
readfile($file);
另外需要注意的是文件大小的区别:
Original: 351,873 bytes
Downloaded: 329,163 bytes
你尝试'ReadFile的()'? – barbashov 2013-04-08 21:48:37
@ DavidC799:如果你想讨论以前问题的答案,请在那里留言。不要只是在这里放一些代码,并告诉我们“它不工作”。请记住,只有其他人接受了该答案,但这并不意味着代码也必须适用于您。出于测试目的,请尽量减少代码以引发问题。例如。没有功能,只是一个硬编码的文件名。使用readfile。 – hakre 2013-04-08 21:51:35
@barbashov是的我已经尝试了几种不同的方法。 – DavidC799 2013-04-08 21:53:41