文件不是下载,而是在浏览器中打开

Ami*_*han 6 html javascript anchor download

我的 Pdf 文件存储在 google 存储桶中,我有一个链接,比如https://storage.googleapis.com/bucketName/xyz.pdf。要下载这个文件,我正在这样做,

<a href="https://storage.googleapis.com/bucketName/xyz.pdf" download> Download This File </a>
Run Code Online (Sandbox Code Playgroud)

但是当我点击这个锚标签时,浏览器没有下载这个文件,而是在同一个选项卡中打开这个文件,即使我尝试通过 javascript 下载文件并使用这个代码。

var link = document.createElement("a");
link.download = 'File.pdf';
link.href = 'https://storage.googleapis.com/bucketName/xyz.pdf';
link.click();
Run Code Online (Sandbox Code Playgroud)

但同样的情况再次发生在同一个选项卡中打开文件而不是下载。我不知道主要问题是什么?这个 Google 存储桶是不允许文件下载,还是我的 chrome 设置阻止文件下载。它不是在 Chrome 中下载,我猜 Chrome 确实允许从 CORS 文件下载。

War*_*War 6

根据JavaScript/jQuery,使用 JSON 数据通过 POST 下载文件构造一个 blob,并使用它返回链接的文件引用。

这将以符合标准的方式告知浏览器您的意图。

例子 ...

$.get(/*...*/,function (result)
{
    var blob=new Blob([result]);
    var link=document.createElement('a');
    link.href=window.URL.createObjectURL(blob);
    link.download="myFileName.txt";
    link.click();

});
Run Code Online (Sandbox Code Playgroud)


Ami*_*han 0

尝试link.target = "_blank";此操作将在新选项卡中打开文件并link.download强制下载。

请告诉这是否有效。