无法使用HTML5下载属性下载PDF文件

时间:2018-08-15 15:34:05

标签: html5 pdf download anchor

我在两个不同的锚标记上具有下载属性。一种用于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>

3 个答案:

答案 0 :(得分:3)

下载基础

因此,实际上发生的是,当您链接到文件URL时,浏览器会打开该URL,并且如果它具有显示内容的可访问性,它将几乎总是会显示。一些最常见的示例是图像文件(.png,.jpg等)。但是,如果浏览器无法读取文件类型(.zip),则它将几乎总是下载内容。强制浏览器下载文件的一种好方法是在download标签中添加<a>属性。

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

可能的解决方案

1 -如果您只是试图在浏览器上实现下载功能(看起来好像不是,但我想无论如何我都应该包括在内),则可以打开chrome,然后转到到设置->高级设置->内容设置-> PDF文档->切换下载

2 -您可以压缩和压缩文件,以便浏览器被迫下载文件。

3 -如果您具有对站点的根服务器访问权限,并且该站点正在使用Apache,则可以将以下内容添加到您的.htaccess中

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

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

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

答案 1 :(得分:-1)

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

答案 2 :(得分:-1)

解决方案是:

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

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