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

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

阅读 39.8k
评论 2014-09-25 提问
    6 个回答
    vczhan
    • 2.5k

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

    评论 赞赏 2014-09-25
      Windoze
      • 9.7k

      你的问题其实没说清,你到底是想让你自己的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自己查手册

      评论 赞赏 2014-09-25

        nginx 下的配置参考:

            location / {
                if ($request_filename ~* ^.*?\.(txt|pdf|doc|xls)$){
                    add_header Content-Disposition attachment;
                }
            }
        
        评论 赞赏 2018-01-15
          lhc
          • 1.2k

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

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

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

          评论 赞赏 2016-04-01
            评论 赞赏 2019-06-25
              yanwushu
              • 1.1k

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

              评论 赞赏 2014-09-25
                撰写回答

                登录后参与交流、获取后续更新提醒