我有一些大尺寸的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和任何其他系统或自定义网站来说都是很棒的。

其他回答

对于较大的PDF文件,浏览器挂起。 在Mozilla中,菜单“工具”→“选项”→“应用程序”,然后在内容类型旁边选择adobeacrobat文档。 在Action下拉菜单中,选择Always ask。

这对我没用,所以有用的是:

菜单工具*→附加组件→Adobe Acrobat (Firefox PDF插件)→禁用。 现在我可以下载电子书了!

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

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

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

通常会发生这种情况,因为一些浏览器设置或插件会直接在同一个窗口中打开PDF,就像一个简单的网页。

以下内容可能会对你有所帮助。几年前我用PHP做过。但目前我还没有在这个平台上工作。

<?php
    if (isset($_GET['file'])) {
        $file = $_GET['file'];
        if (file_exists($file) && is_readable($file) && preg_match('/\.pdf$/',$file)) {
            header('Content-type: application/pdf');
            header("Content-Disposition: attachment; filename=\"$file\"");
            readfile($file);
        }
    }
    else {
        header("HTTP/1.0 404 Not Found");
        echo "<h1>Error 404: File Not Found: <br /><em>$file</em></h1>";
    }
?>

将上述文件保存为download.php。

将这个小片段保存为服务器某处的PHP文件,您可以使用它在浏览器中进行文件下载,而不是直接显示。如果要提供PDF以外的文件,请删除或编辑第5行。

你可以这样使用它:

将以下链接添加到HTML文件中。

<a href="download.php?file=my_pdf_file.pdf">Download the cool PDF.</a>

参考来源:这个博客

如果你在浏览器中有一个插件知道如何打开PDF文件,它会直接打开。比如图像和HTML内容。

因此,另一种方法是在响应中不发送MIME类型。这样,浏览器就永远不会知道哪个插件应该打开它。因此,它会给你一个保存/打开对话框。

一个非常简单的方法来实现这一点,不使用外部下载网站或修改标题等,只是创建一个ZIP文件与PDF里面,并直接链接到ZIP文件。这总是会触发保存/打开对话框,人们仍然很容易双击PDF窗口,与.zip相关的程序被启动。

顺便说一句,这是个好问题,我也在寻找答案,因为大多数浏览器内置的PDF插件需要很长时间才能显示任何东西(并且在PDF加载时经常会挂起浏览器)。