0

我正在使用 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() {

  }

}

网址类似于http://upload.wikimedia.org/wikipedia/commons/d/d6/MicroQR_Example.png

有谁知道我的代码有什么问题

4

1 回答 1

1

这来自request.responseText:浏览器尝试将结果解释为字符串并从其字符集中对其进行解码(但它不是文本,您会得到损坏的数据)。

你可以用 ArrayBuffer 询问request.responseType = "arraybuffer";,数据将在response属性中:zip.file("1.png",request.response);

如果您需要 IE 6-9 支持,responseType上述方法将不起作用,请参阅此处了解更多信息。

于 2014-05-21T18:55:10.570 回答