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

Creating Blob object from raw file downloaded from server with $http.

本文关键字:原始 文件创建 Blob 对象 下载 http 服务器 使用      更新时间:2023-09-26

服务器上有存储文件的url。Url为http://website.com/abc我在这个url上执行$http get。

$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,并执行$http。在没有指定responseType的情况下获取。

如何创建一个合适的Blob文件?我需要Blob文件,以创建文件对象,这是一个条目数据,以实现逻辑显示文件在幻灯片中与模式。我已经实现了文件类型的逻辑,这是由输入表单创建的-实现是为了上传到服务器之前的需要。现在事实证明,服务器不返回相同的文件给我,但只返回文件的url,这创造了一个想法,从url转换为文件,以不重复的逻辑。

Try

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

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

注意XMLHttpRequest responseType也可以设置为"blob",参见如何使用javascript从web服务返回的二进制字符串构建PDF文件