我有一些大尺寸的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/
这是旧的帖子,但这是一个我的解决方案在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和任何其他系统或自定义网站来说都是很棒的。
如果你需要强制下载页面上的单个链接,一个非常简单的方法就是使用href-link中的HTML5 download-属性。
参见:http://davidwalsh.name/download-attribute
有了这个,你可以重命名用户将下载的文件,同时它强制下载。
这是否是一种好的做法一直存在争议,但在我的情况下,我有一个PDF文件的嵌入式查看器,查看器不提供下载链接,所以我必须单独提供一个。在这里,我希望确保用户不会在web浏览器中打开PDF文件,否则会令人困惑。
这将不需要打开另存为对话框,但将下载链接直接到预设的下载目的地。当然,如果你是为别人做一个网站,需要他们手动写属性到他们的链接可能是一个坏主意,但如果有办法让属性到链接,这可能是一个简单的解决方案。