使用$ http从服务器下载的原始文件创建Blob对象。

时间:2015-10-22 07:26:23

标签: javascript angularjs file encoding

在服务器上有存储文件的url。 网址 http://website.com/abc 我在这个网址上打了$ http。

$http.get(url, { responseType: "arraybuffer" });

我想从中创建Blob对象。我确信该对象的类型为png,因为它在上传之前有这个扩展名,并且显示正确。

new Blob(result.data, {type: "image/png"});

我收到消息: 无法构造'Blob':第一个参数既不是数组,也不是索引属性。

来自服务器http://website.com/abc的响应开发人员控制台中的GET如下所示:

ÿØÿàJFIFÿþ;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 60
ÿÛC





 ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROÿÛC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOÿÂÒ"ÿÄÿÄÿÚæå2ag\Ý#úDê3[Zdfc5±Ô¢¬æ)K<`¤l2¸ÊánYR±aA`Í%RÈfbz!¤tÞÑ-µd7ZªÀ[hz¨f¥>©cAV¬{3á R³F0  W>~c³"ðÈìøÖ²ÇBÙ³±+
½ò9tµ°õ

我尝试将Blob类型设置为application / octet-stream,并且还在没有指定responseType的情况下执行$ http.get。

如何创建正确的Blob文件? 我需要Blob File来创建File对象,它是实现逻辑的入口数据,用于以幻灯片形式显示带有模态的文件。我已经为File类型的文件实现了逻辑,这些文件是由输入表单创建的 - 在上传到服务器之前已经完成了实现。现在事实证明服务器不会向我返回相同的文件,但只返回文件的URL,这创建了一个从url转换为File的想法,以便不再重复该逻辑。

1 个答案:

答案 0 :(得分:9)

尝试

$http.get(url, { responseType: "blob" });

// missing `[]` at `js` at Question
new Blob([result.data], {type: "image/png"});

注意XMLHttpRequest responseType也可以设置为"blob",请参阅How to build PDF file from binary string returned from a web-service using javascript