JavaScript:如何从二进制字符串创建Blob?
我想从我的备份下载一个受保护的文件-我必须发送授权头,所以我不能直接链接它。我创建了以下Ajax请求来下载它:JavaScript:如何从二进制字符串创建Blob?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我想从我的备份下载一个受保护的文件-我必须发送授权头,所以我不能直接链接它。我创建了以下Ajax请求来下载它: Ember.$.ajax({ url: self.get("file.filepath"), type: "GET", beforeSend: function(xhr) { xhr.setRequestHeader(header, content); }, processData: false, succes
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,但没有效果。我做错了什么?我今天也有同样的问题
这是一个角度代码,但也许有什么东西可以帮你
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'});
}
});
guest271314的答案中有一个正确的答案-这是我能找到的唯一有效的解决方案。尝试使用
XMLHttpRequest
,将responseType
设置为“blob”
,URL.createObjectURL()
,非常感谢-这很有效!