JavaScript:如何从二进制字符串创建 Blob?

标签 javascript jquery ajax

我想从我的支持下载 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/

相关文章:

javascript - 如何动态创建表单元素

javascript - 使用 JQuery/javascript 获取图像大小

javascript - 如果为空则更改输入样式

javascript - 根据容器的宽高设置字体大小

javascript - Jquery动态表中最接近的输入

php - 使用 jQuery 表单验证远程方法验证上传的文件大小

javascript - 在php中动态生成javascript还是为多语言界面执行ajax?

javascript - 如何基于Ajax请求打印JavaScript?

jquery - 从 javascript 调用 VB.net 函数

javascript - JavaScript 确认框中的取消选项仅返回 true 条件