0

私は 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のようなものです

私のコード内で何が間違っているのか誰でも知っていますか

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 に答える