我正在使用zipzap做一个项目,并希望在zipzap中压缩一个图像文件。但压缩后的图像没有正确显示,其原因是图像数据是从XMLHttpRequest获取的,而图像数据的编码方式似乎不正确。
我的代码:
function requestImgPart(url) {
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.setRequestHeader('Accept', 'image/*');
request.onload = onload;
request.onerror = onerror;
request.send();
function onload() {
if (request.status === 200) {
var zip= new JSZip();
zip.file("1.png",request.responseText);
zip.saveAs("presentations.zip");
}
}
function onerror() {
}
}url类似于Example.png
有谁知道我的代码有什么问题吗?
发布于 2014-05-21 18:55:10
这来自于request.responseText:浏览器试图将结果解释为字符串,并从其字符集中解码结果(但它不是文本,数据会损坏)。
您可以使用ArrayBuffer询问request.responseType = "arraybuffer";,数据将位于response属性:zip.file("1.png",request.response);中。
如果您需要IE6-9支持,上面的responseType将无法工作,请参阅这里获取更多信息。
https://stackoverflow.com/questions/23784310
复制相似问题