强制下载未放在服务器上的文件

时间:2013-11-24 19:42:16

标签: php file pdf

我试图强制下载我正在生成的pdf文件。我不需要将pdf文件实际保存在服务器上。

所以当我生成我的pdf文件时,我会得到文件内容。然后我用base64编码它。现在的问题是我需要强制下载它。我已经浏览了整个网络,但是我还没有找到任何搜索结果,告诉我如何在没有实际放置在网站上的文件的情况下执行此操作。

我尝试过以下代码:

header("Content-type: application/pdf");
header("Content-disposition: attachment; filename=\"invoice.pdf\""); 
header("Content-Length: ".filesize($pdffile));
readfile(base64_decode($pdffile));

但是,它给了我一个损坏的pdf文件,(1 kb)。实际文件大约应该是50kb。

关于我可以尝试的任何想法?

1 个答案:

答案 0 :(得分:2)

readfile尝试从文件输出内容,但您只有数据字符串。试试这个:

header("Content-type: application/pdf");
header("Content-disposition: attachment; filename=\"invoice.pdf\""); 
echo base64_decode($pdffile);

我还建议将$ pdffile重命名为$ pdfcontent,以便更好地澄清。