Как сохранить изображение в zipzap

Я делаю проект с zipzap и хочу заархивировать файл изображения в zipzap. Но изображение не отображается правильно после zip, причина в том, что данные изображения были получены из 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-адрес выглядит примерно так: http://upload.wikimedia.org/wikipedia/commons/d/d6/MicroQR_Example.png

Кто-нибудь знает, что не так в моем коде


person Pocky    schedule 21.05.2014    source источник


Ответы (1)


Это происходит от request.responseText : браузер пытается интерпретировать результат как строку и декодировать ее из своей кодировки (но это не текст, и вы получаете поврежденные данные).

Вы можете запросить ArrayBuffer с помощью request.responseType = "arraybuffer";, данные будут в атрибуте response: zip.file("1.png",request.response);.

Если вам нужна поддержка IE 6-9, responseType выше не будет работать, см. здесь для получения дополнительной информации.

person David Duponchel    schedule 21.05.2014