怎样让 pdf 文件直接下载而非在浏览器里打开

点击 <a href="18禁.pdf">下载</a> 的时候,Chrome 会自动调用内置的 pdf 阅读器打开,我只想让用户下载这个文件,有什么办法呢?

阅读 59.4k
6 个回答

最方便的是
<a href="18禁.pdf" download>下载</a>

你的问题其实没说清,你到底是想让你自己的Chrome直接下载PDF,还是想让你的服务器上的PDF被Chrome直接下载?
如果是前者,你可以打开Chrome插件设置页面chrome://plugins/,停用其中的“Chrome PDF Viewer”插件,这样你的Chrome就会直接下载所有PDF文件了。
如果是后者,你需要修改你的Web服务器MIME type设置,将PDF文件的MIME type改为application/octet-stream并加入Content-Disposition:attachment header,对于Apache服务器,你可以在pdf文件所在目录的.htaccess文件里加入:

<FilesMatch "\.(?i:pdf)$">
      ForceType application/octet-stream
      Header set Content-Disposition attachment
</FilesMatch>

其它Web server自己查手册

nginx 下的配置参考:

    location / {
        if ($request_filename ~* ^.*?\.(txt|pdf|doc|xls)$){
            add_header Content-Disposition attachment;
        }
    }

最好的解决方案是通过后台的service来做,返回不同的http header来达到不同的目的。
需要用的就是“Content-disposition”,解释如下:

Content-disposition: inline; filename=foobar.pdf
表示浏览器内嵌显示一个文件
Content-disposition: attachment; filename=foobar.pdf
表示会下载文件 

友情提示:这样的话,请求url就没有必要带上.pdf后缀了。

浏览器打开一个pdf之后。按ctrl+s直接保存pdf,不就等于下载了么。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏