未使用 HTML5 下载属性下载 PDF 文件

PDF file not downloading with HTML5 download attribute

我在两个不同的锚标签上有一个下载属性。一个用于 Excel 文件,一个用于 PDF。 Excel 文件下载。 PDF 在新选项卡中打开。为什么会这样?代码如下:

        <div class="col-2 center">
            <a download href="files/excel-sample.xlsx">
                <img src="img/excel-logo.png" />
            </a>
        </div>
        <div class="col-2 center">
            <a download href="files/pdf-sample.pdf">
                <img src="img/pdf-logo.png" />
            </a>
        </div>

下载基础知识

所以基本上发生的事情是,当您 link 到一个文件 URL 时,浏览器会打开那个 URL 并且如果它可以显示内容,它几乎总是将要。一些最常见的示例是图像文件(.png、.jpg 等)。但是,如果浏览器无法读取文件类型 (.zip),那么它几乎总是会下载内容。强制浏览器下载文件的一种好方法是在 <a> 标记中添加 download 属性。

大多数现代浏览器都可以读取和访问 PDF,因此默认情况下,浏览器设置为打开文件而不是下载文件。由于这种可访问性,大多数现代浏览器都引入了设置,允许用户在一台机器上决定 PDF(或任何其他可读文件)是否应该在另一个 window 中打开或默认下载。在许多情况下,即使使用 download 属性,浏览器仍然可以自行决定如何处理文件。

可能的解决方案

1 - 如果你只是想在你的浏览器上实现下载功能(看起来你不是,但我想我应该包括在内),你可以打开 chrome,转到设置 -> 高级设置 -> 内容设置 -> PDF 文档 -> 下载时切换

2 - 您可以压缩文件,以便浏览器强制下载文件。

3 - 如果您可以访问您网站的根服务器并且它使用的是 Apache,您可以将以下内容添加到您的 .htaccess

ForceType application/octet-stream
Header set Content-Disposition attachment

如果您使用的是 NGINX 网络服务器,您可以添加以下重定向

location ~* (.*\.pdf) {
types { application/octet-stream .pdf; }
default_type application/octet-stream;
}

你不能使用<a download href="files/pdf-sample.pdf"> 但您可以使用 <a href="files/pdf-sample.pdf"> 预览您的文件

所以解决方案是:

<a href="pdf-sample"  download="pdf-samle.pdf">

请注意,“href”的值没有减少 .pdf,但“下载”的值减少了 .pdf。请记住,您还必须从目标文件中删除 .pdf 缩减。浏览器似乎将下载的文件视为非 pdf 文件,因此默认情况下不会打开它。