我想从我的支持下载 protected 文件 - 我必须发送授权 header ,因此我无法直接链接它。我创建了以下 Ajax 请求来下载它:
Ember.$.ajax({
url: self.get("file.filepath"),
type: "GET",
beforeSend: function(xhr) {
xhr.setRequestHeader(header, content);
},
processData: false,
success: function (result, a, xhr) {
var blob = new Blob([result], {type: xhr.getResponseHeader("content-type") || ""});
saveAs(blob, self.get("file.filename"));
}
});
处理文本文件时一切正常。然而,当我尝试下载二进制文件(图像)时,我得到了完全无意义的结果(即使通过控制台打印的响应中的二进制字符串对我来说似乎也很好)。所以我认为 blob 构建存在问题。
我尝试过使用 Int8Array,但没有帮助。我做错了什么?
最佳答案
我今天也遇到了同样的问题 这是一个 Angular 代码,但也许有些东西可以帮助你
return $http({
url: host + "api/map/rectangleMap",
method: 'POST',
data: angular.toJson(coords),
responseType: 'blob',
transformResponse: function(data){
return new Blob([data], {type: 'image/png'});
}
});
关于JavaScript:如何从二进制字符串创建 Blob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33619873/