我的Pdf文件存储在Google存储桶中,我有一个链接,说https://storage.googleapis.com/bucketName/xyz.pdf。要下载此文件,我正在这样做,
<a href="https://storage.googleapis.com/bucketName/xyz.pdf" download> Download This File </a>
但是,当我单击该锚标记时,而不是下载此文件浏览器,甚至在我尝试通过javascript下载文件并使用此代码的情况下,都在同一标签中打开了该文件。
var link = document.createElement("a");
link.download = 'File.pdf';
link.href = 'https://storage.googleapis.com/bucketName/xyz.pdf';
link.click();
但是同样的情况再次发生,文件在同一选项卡中打开而不是下载。我不知道主要问题是什么?是这个Google存储桶不允许文件下载,还是我的Chrome设置禁止文件下载。 它不是在Chrome浏览器中下载的,我认为Chrome浏览器确实允许从CORS文件下载。
答案 0 :(得分:3)
按照JavaScript/jQuery to download file via POST with JSON data构造一个Blob,并使用该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();
});
答案 1 :(得分:1)
尝试link.target = "_blank";
,这将在新标签页中打开文件,而link.download
将强制其下载。
请告知是否可行。
答案 2 :(得分:0)
内容处置附件似乎对我有用:
self.set_header("Content-Type", "application/json")
self.set_header("Content-Disposition", 'attachment; filename=learned_data.json')
应用程序/八位字节流
我在JSON上发生了类似的事情,对我来说,在服务器端上,我将标头设置为 self.set_header(“ Content-Type”,“ 应用程序/ json ”) 但是,当我将其更改为:
self.set_header("Content-Type", "application/octet-stream")
它会自动下载。
还知道,为了使文件仍然保留.json后缀,您需要在文件名标头上添加它:
self.set_header("Content-Disposition", 'filename=learned_data.json')