我有一些大尺寸的PDF目录在我的网站上,我需要链接这些下载。当我在谷歌上搜索时,我发现下面有这样一件事。它应该打开“另存为…”弹出链接点击…

 <head>
    <meta name="content-disposition" content="inline; filename=filename.pdf">
    ...

但它不工作:/当我链接到一个文件如下,它只是链接到文件,并试图打开文件。

    <a href="filename.pdf" title="Filie Name">File name</a>

更新(根据以下答案):

据我所知,没有100%可靠的跨浏览器解决方案。也许最好的方法是使用下面列出的web服务之一,并提供下载链接…

http://box.net/ http://droplr.com/ http://getcloudapp.com/


当前回答

我刚刚用了这个,但我不知道它是否适用于所有浏览器。

它适用于Firefox:

<a href="myfile.pdf" download>Click to Download</a>

其他回答

我遇到了同样的问题,找到了一个迄今为止非常有效的解决方案。你把下面的代码放在你的。htaccess文件中:

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

它来自于强制文件下载而不是显示在浏览器中。

我为Firefox找到了一个非常简单的解决方案(只适用于相对而不是直接href): add type="application/octet-stream":

<a href="./file.pdf" id='example' type="application/octet-stream">Example</a>

如果你需要强制下载页面上的单个链接,一个非常简单的方法就是使用href-link中的HTML5 download-属性。

参见:http://davidwalsh.name/download-attribute

有了这个,你可以重命名用户将下载的文件,同时它强制下载。

这是否是一种好的做法一直存在争议,但在我的情况下,我有一个PDF文件的嵌入式查看器,查看器不提供下载链接,所以我必须单独提供一个。在这里,我希望确保用户不会在web浏览器中打开PDF文件,否则会令人困惑。

这将不需要打开另存为对话框,但将下载链接直接到预设的下载目的地。当然,如果你是为别人做一个网站,需要他们手动写属性到他们的链接可能是一个坏主意,但如果有办法让属性到链接,这可能是一个简单的解决方案。

这是旧的帖子,但这是一个我的解决方案在JavaScript使用jQuery库。

<script>
(function($){
    var download = [];
    $('a.force-download, .force-download a').each(function(){
        // Collect info
        var $this = $(this),
            $href = $this.attr('href'),
            $split = $href.split('/'),
            $name = document.title.replace(/[\W_]/gi, '-').replace(/-{2,}/g, '-'); // get title and clean it for the URL

        // Get filename from URL
        if($split[($split.length-1)])
        {
            $tmp = $split[($split.length-1)];
            $tmp = $tmp.split('.');
            $name = $tmp[0].replace(/[\W_]/gi, '-').replace(/-{2,}/g, '-');
        }

        // If name already exists, put timestamp there
        if($.inArray($name, download) > -1)
        {
            $name = $name + '-' + Date.now().replace(/[\W]/gi, '-');
        }

        $(this).attr("download", $name);
        download.push($name);
    });
}(jQuery || window.jQuery))
</script>

您只需要在<a>标记中使用类force-download,就会自动强制下载。您也可以将它添加到父div,并将拾取其中的所有链接。

例子:

<a href="/some/good/url/Post-Injection_Post-Surgery_Instructions.pdf" class="force-download" target="_blank">Download PDF</a>

这对于WordPress和任何其他系统或自定义网站来说都是很棒的。

添加响应头Content-Disposition:附件;后面跟着文件名。删除Meta Content-Disposition;Inline;哪个会在同一个窗口中打开文档

在java中,它被设置为

response.setHeader("Content-Disposition", "attachment;filename=test.jpg");