6

Base64 または NodeJS を含まない JSZip の簡単なドキュメントを見つけるのに苦労しています。基本的に、test.html と「images」というフォルダーがあるディレクトリがあります。そのフォルダの中にはたくさんの画像があります。そのフォルダからzipファイルを作成したいと思います。

このための非常に単純な「hello world」タイプのコードを手伝ってくれる人はいますか? http://stuk.github.io/jszip/のドキュメントには、Base64 データからの画像の追加や、JavaScript で作成したテキスト ファイルの追加などの内容が含まれています。既存のファイルから .zip ファイルを作成したいと考えています。

おそらく、JSZip を使用して .zip ファイルに画像を追加するための唯一のサポートは、Base64 データを介して画像を追加することでしょうか? ドキュメントのどこにも、image-url-to-base64 関数もありませんが、StackOverflow のどこかで見つけました。

何かアドバイス?

4

1 に答える 1

5

ブラウザーでは、ajax リクエストを使用し、responseType属性を使用して配列バッファーを取得できます (IE 9 のサポートが必要な場合は、たとえばjszip-utilsを使用できます)。

var xhr = new XMLHttpRequest();
xhr.open('GET', "images/img1.png", true);
xhr.responseType = "arraybuffer";
xhr.onreadystatechange = function(evt) {
    if (xhr.readyState === 4) {
        if (xhr.status === 200) {
            var zip = new JSZip();
            zip.file("images/img1.png", xhr.response);
        }
    }
};
xhr.send();

この例、1 つのファイルのみを処理し、手動で xhr オブジェクトを作成するため制限されています (言及しなかったため、ライブラリは使用しませんでした) が、その方法を示す必要があります。

JSZip のドキュメントでより完全な例を見つけることができます: jQuery promises と jszip-utils を使用してファイルのリストをダウンロードし、その後ダウンロードをトリガーします。

ライブラリを使用して ajax リクエストを処理する場合は、配列バッファを要求できるかどうかを確認してください。デフォルトでは、応答をテキストとして扱うため、画像が破損します。たとえば、jQuery はすぐにサポートするはずです。

于 2014-07-27T21:47:53.223 に答える