下载pdf而不在浏览器中打开

问题描述

我想直接下载pdf文件而不进行查看,到目前为止,我一直在尝试以下操作,但无济于事。

1- window.open("https://s3-link1.pdf",'Download');

2- <a href="https://s3-link1.pdf" download>Link</a>

链接-https://s3-link1.pdf

假设我的域为 https://www.somedomain.com

我在某处读到我们无法下载跨域文件。必须从后端传递content-disposition标头。我在这里感到困惑。另一个跨源csv文件可以轻松下载。

https://s3-link2.csv

我只需要使用javascript下载pdf文件。请引导我。

解决方法

选项1: 使用jQuery,您可以尝试以下方法:

$.get("https://s3-link1.pdf",function (result)
{
    var blob = new Blob([result]);
    var link = document.createElement('a');
    link.href = window.URL.createObjectURL(blob);
    link.download = "myFileName.pdf";
    link.click();
});

选项2: download属性可在所有现代浏览器(包括MS Edge)中使用,但不适用于Internet Explorer。

在最新版本的Chrome中,您无法下载跨域文件(它们必须托管在同一域中)。

<a href="https://s3-link1.pdf" download>Download PDF</a>

在此博客上找到有关此内容的更多信息:https://actualwizard.com/html-force-download-file

,

尝试获取。

fetch("https://s3-link1.pdf",{
    method: 'GET'
}).then(resp => resp.blob())
    .then(blob => {
        const url = window.URL.createObjectURL(blob);
        const a = document.createElement('a');
        a.style.display = 'none';
        a.href = url;
        a.download = "name"; // the filename you want
        document.body.appendChild(a);
        a.click();
        window.URL.revokeObjectURL(url);
    })