2016-10-03 219 views
2

我有一个网站,该网站使用PHP开发并托管在亚马逊服务器中。在Chrome浏览器中上传的PDF文件不能在Chrome浏览器中打开,但是此PDF文件在其他浏览器(Internet Explorer)中打开以供查看。在铬下载。我希望这个pdf可以查看。对于链接代码
Amazon S3中的PDF无法在Chrome浏览器中查看

<a href="<?php echo $filename;?>" target="_blank"><?php echo $data['File_Label'];?></a> 


网址:Please click here

但低于文件被打开了用于查看铬Please check this

+2

这个问题如何与'php'标签相关? – Dekel

+0

https://support.google.com/chrome/answer/6213030?hl=zh-CN – RiggsFolly

+0

与Opera相同的问题。如果http://ozlabs.org/~dgibson/papers/dtc-paper.pdf等其他链接在浏览器中打开,则问题可能是“Content-Type:application/octet-stream”HTTP标头。不知道解决方案 –

回答

2

如果您希望浏览器在处理该文件为PDF格式,你应该让他知道他的文件是pdf。这样做的方法是发送相关的头:

Content-type: application/pdf 

s3发送当前的标题是:

Contant-type: application/octet-stream 

既然你上传文件到S3 - 你可以设置正确的mime-type在上传过程中,或之后使用某些s3工具(例如s3cmd for windows)。

根据您提供的link to the documentation,该putObjectFile功能已过时,但是这是定义:

putObjectFile (string $file, string $bucket, string $uri, [constant $acl = S3::ACL_PRIVATE], [array $metaHeaders = array()], [string $contentType = null]) 

正如你所看到的 - 最后一个参数是contentType - 这样你就可以在上传时将其设置为application/pdf文件。
这会在下载时设置正确的标题。

+0

查看正在使用的锚标记 – RiggsFolly

+0

@Dekel PDF链接在索引页中创建,它是简单的html锚标记。我该如何为特定链接添加内容类型。 –

+0

这与html无关 - 标头是服务器发送的内容。 – Dekel

相关问题