我正在使用此代码:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // some day in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$original);
header("Content-Transfer-Encoding: binary");
readfile('/tmp/'.$original);
从我的服务器(EC2)输出已从S3中获取的文件。这适用于图像和.txt文件,但PDF和.doc似乎在某种程度上受损。他们不会打开,或者如果他们这样做,内容就会出现乱码。
我认为必须使用内容类型application / octet-stream?然而,我的知识在这方面是有限的 - 我已经做了一些阅读和试验和错误,但我没有进一步前进。
在S3中,所有文件的内容类型都设置为application / octet-stream。我不确定这是否正确(这不是我在上传文件时设置的内容)
任何想法都赞赏。
由于
答案 0 :(得分:2)
对于.doc文件,您应该设置 application / msword ,对于.pdf文件,您应该设置 application / pdf
答案 1 :(得分:0)
<?php
header('Content-type: application/pdf'); // set content type
header('Content-Disposition: attachment; filename="downloaded.pdf"'); // force download
readfile('original.pdf'); // read the content to server
?>