目前,我已实施以下内容,它适用于Chrome浏览器。但是在Firefox浏览器上,它从API服务器获得响应,但没有任何内容被下载到Firefox浏览器。
我可能做错了什么?以下不是跨平台兼容的吗?
提前谢谢
以下是代码:
var config = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify(...)
}
fetch("https://test-server.com:8080/download/zip", config)
.then(response => response.blob())
.then(zipFile => {
console.log(zipFile)
var blob = zipFile;
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = 'download'
link.click();
})
.catch((error) => {
console.log("Error: ", error)
})
在Chrome上,console.log(zipFile)
会记录类似:Blob {size: 504188, type: "application/zip"}
的内容,但在Firefox上,它会记录Blob {size: 504188, type: "" }
。
答案 0 :(得分:1)
可能是因为链接元素没有附加到身体上吗?
当我尝试以下操作时,它可以在Chrome中使用,但不适用于Firefox(就像您正在体验一样):
link = document.createElement('a')
link.href = 'http://google.com'
link.click()
但
link = document.createElement('a')
link.href = 'http://google.com'
document.body.appendChild(link)
link.click()
也在Firefox中工作。