0

jszip.js を使用して、クリック時に zip ファイルとして一緒にダウンロードする必要があるサーバーから複数の Excel ファイルをバンドルしようとしています。

デモ スクリプトを置き換えようとすると、zip ファイルを作成できますが、空です。

zip.file に 2 つのファイルを入れると、最初のファイルが zip に表示されますが、破損しています。お気に入り:

var zip = new JSZip();
zip.file('http://website/file1.xlsx', 'http://website/file2.xlsx');
var content = zip.generate({type:"blob"});
saveAs(content, "example.zip");

したがって、ファイルの名前をファイルの場所よりも最初の位置に配置する必要がありますが、別の方法でアクセスする必要はありません...

APIの仕組みをチェックしていないだけだと思います。

サーバーでホストされている少なくとも 2 つのファイルの例を取得することは素晴らしいことです...

4

1 に答える 1

2

JSZip はコンテンツをダウンロードできませんが、IE <= 9 をサポートする必要がある場合は、XHR (with xhr.responseType = "arraybuffer") またはJSZipUtilsを使用できます。詳細については、ドキュメントのこのページを参照してください。

あなたがやろうとしていることは、この例のようになります:いくつかのファイルをダウンロードしてそれらを圧縮してください。

コード全体をコピー/貼り付けせずに、例:

  • responseType = "arraybuffer"ajax呼び出しをトリガーします(JSZipUtilsを使用しますが、最近のブラウザーのみをサポートしている場合にのみ簡単に使用できます)
  • それらを約束にラップします(ここではjQueryの約束ですが、独自のものを使用できます)
  • 結果を zip オブジェクトに追加します
  • ダウンロードをトリガーする前に、すべての約束が完了するのを待ちます
于 2016-01-11T18:56:45.707 に答える