下载文件类型混淆 - 应用程序/八位字节流

时间:2011-09-20 13:10:44

标签: php amazon-s3 amazon-ec2 download

我正在使用此代码:

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。我不确定这是否正确(这不是我在上传文件时设置的内容)

任何想法都赞赏。

由于

2 个答案:

答案 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
?>

来源:http://php.net/manual/en/function.header.php