我的应用程序生成指向与产品关联的任何PDF文件的动态链接。链接如下所示:
<a href="http://mysite.net/mylink.pdf?uid=db5f3dc108594b34a86ad52c8686ade5%2FMyCompany&expires=1324049275&signature=jrSF87xtHkQDCTvOek6uuMacPRc%3D" target="_blank">Brochure</a>
如果用户右键单击并选择“将链接文件下载为”(或其等效文件),则会在Google Chrome和Safari中向该文件显示“.pdf.png”扩展名。 Firefox工作正常,不确定Internet Explorer。
我希望Firefox和Chrome知道它是PDF。因为显然用户会尝试下载这些内容,他们将使用错误的扩展名保存它们,并且他们将无法打开该文件。
答案 0 :(得分:3)
假设您在rails控制器中使用“send_data”来提供文件,我建议:
send_data(
data,
:filename => "filename.pdf",
:disposition => "attachment",
:type => 'application/pdf'
)
“数据”是PDF的内容。
有关详细信息,请查看以下链接:
http://api.rubyonrails.org/classes/ActionController/DataStreaming.html#method-i-send_data
答案 1 :(得分:0)
使用某些脚本语言(如php或用户.htaccess
)发送正确的标头<Files *.pdf>
ForceType application/pdf
Header set Content-Disposition attachment
</Files>
答案 2 :(得分:0)
您是否听说过内容处置标题?它允许您告诉浏览器询问用户如何处理文件,而不是尝试自己处理它。我不认为它是HTTP规范的一部分,但IETF在RFC 2183下记录了它。
您应该能够使用您使用的任何语言在转到客户端之前更改HTTP标头。您添加的标题将如下所示:
Content-Disposition: attachment; filename=filename.pdf
您可能还需要Content-Type标头:
Content-Type: application/pdf