使用JSZip将JavaScript Blob转换为图像

3
var bl = window.URL.createObjectURL(xhr.response)

var zip = new JSZip();
zip.file(bl);

zip.generateAsync({type:"blob"})
.then(function(content) {
    saveAs(content, "example.zip");

}, function(err){
    console.log(err)
})

我的XmlHttpRequest从图像文件得到了一个'blob'类别的响应。我该如何将blob图像文件转换成图片文件(可能是.gif,.jpg,.bmp,.jpg-large等),以便我可以制作没有错误的zip文件?


1
当传递单个参数时,.file 尝试获取文件而不是设置文件。要设置一个 file,需要传递两个参数:名称和内容(可以是 blob)。 - Patrick Evans
1个回答

5
使用URL.createObjectURL方法可以获取 Blob 对象的 URL(例如:blob:https://stackoverflow.com/e62c177a-b4b1-4945-8e13-53bb5a3c8f34)。JSZip 无法解析该 URL,但是您可以直接使用 Blob 对象(例如,在您的情况下,使用xhr.response)。正如 Patrick Evans 在评论中指出的那样,您还需要提供文件名。
var zip = new JSZip();
zip.file("my_file.ext", xhr.response);

zip.generateAsync({type:"blob"})
.then(function(content) {
    saveAs(content, "example.zip");
}, function(err){
    console.log(err)
});

GitHub上的相关问题 https://github.com/Stuk/jszip/issues/246 - aloisdg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接