【发布时间】:2020-11-10 22:45:39
【问题描述】:
function download(id) {
$.get(base_url + "account/download/" + id, function (data) {
var data = JSON.parse(data);
if (data.code == 1) {
console.log(data)
//data.filePath = "https://s3.amazonaws.com/stores-products/8c0123ef4a1d685bbf50582ffb461573.jpg"
fetch(data.filePath, { mode: 'no-cors', method: 'GET' })
.then(resp => resp.blob())
.then(blob => {
console.log(blob)
const url = window.URL.createObjectURL(blob);
console.log(url)
const a = document.createElement('a');
//a.style.display = 'none';
a.href = url;
a.download = data.fileName;
document.body.appendChild(a);
a.click();
a.remove();
window.URL.revokeObjectURL(url);
})
.catch(() => bootbox.alert("Unable to Download File"));
}
else if (data.code == 0) {
bootbox.alert(data.msg);
}
});
}
在获取 api 调用下,我使用 fetch 和 amazon s3 的 url,它在本地工作正常,但在服务器上生成错误文件,请查看我的代码并让我知道此代码中的问题。我没有收到任何错误消息,但下载了文件,当我打开它时显示加载文件错误。
【问题讨论】:
-
请同时提供您收到的错误消息。您正在哪个 URL/域上执行此脚本以及您要加载哪个 URL/域?
-
data.filePath = "s3.amazonaws.com/stores-products/…" 我没有收到任何错误消息,但是下载了文件,当我打开它时显示加载文件错误。域名:rj.ltj3demo.com
-
这段代码没有问题,另一端的服务器根本不允许跨域请求。要么您试图在本地获取其他资源,要么您的浏览器上有一些设置允许绕过同源策略(标志或附加组件?)
-
代码看起来不错。我猜有些东西在 S3 上不同步。你能检查一下你的 S3 存储桶设置吗?
-
对于我使用的 cors 模式:'no-cors'
标签: javascript promise fetch