2012-10-10 100 views
1
<?php 
header('Content-disposition: attachment; filename=Booking.pdf'); 
header('Content-type: application/pdf'); 
readfile('http://mysite.com/Booking.pdf'); 
?> 

为什么会把Booking.pdf文件下载为空!pdf php下载产生空文件

mac和windows都会说: 文件“Booking.pdf”无法打开,因为它是空的。

已检查谷歌和stackoverflow,找不到相关的信息...有没有人经历过这之前?

ps:我只发现这个论坛帖子:'在线问题有点偏离我的想法,但通常是由于将PDF加载到FTP的ASCII模式的服务器而不是二进制文件。这会创建一个损坏的文件。一定要打开二进制传输',但在这种情况下,这是不正确的,因为我可以在iframe中显示相同的pdf文件,它不是空白/空白。

+2

请问你的PHP安装允许在文件调用,例如网址是allow_url_fopen启用?它与ascii-mode ftp无关 - 如果代码正常工作,仍然会损坏PDF内容。损坏的ftp上传仍会产生非零长度的文件。 –

+0

我假设你是正确的,并在其他地方阅读我必须在我的public_html中定制(allow_url_fopen = on)ini.php,但显然这是一个严重的安全风险... ... –

回答

4

您需要更改

readfile('http://mysite.com/Booking.pdf'); 

readfile(__DIR__ . '/Booking.pdf'); 

$file = __DIR__ . '/test.pdf' ; 
header('Content-disposition: attachment; filename=Booking.pdf'); 
header('Content-type: application/pdf'); 
header("Content-length: ".filesize($file)); 
readfile($file); 
+1

有时它很简单,它会被忽视! –