簡単なアップロード フォーム (.zip ファイル用) を作成していますが、後で必要になるすべてのファイルが zip に含まれているかどうかを検証したいと考えています。
だから私は関数isZipCorrect()を持っています:
isZipCorrect = function() {
'use strict';
if (this.name.slice(-3) === 'zip') {
var fileReader = new FileReader();
var zip = new JSZip();
var shpCorrect = false;
fileReader.onload = function() {
var zip = new JSZip(this.result);
shpCorrect = zip.file(/.*?/).every(function(file) {
return (file.name.slice(-3) === 'shp' ||
file.name.slice(-3) === 'dbf' ||
file.name.slice(-3) === 'shx');
});
console.log(shpCorrect);
};
fileReader.readAsArrayBuffer(this.file);
return shpCorrect;
} else {
return true;
}
if(isZipCorrect())
XMLHttpRequestの前に使用します。
問題は、コード全体が既に終了しているときに操作を終了する非同期関数 (fileReader.onload) であると想定しています。しかし、私は fileReader.onload から send 関数を呼び出したくありません。私にとっては、Zip の正しいチェックはオプションである必要があるためです (「解析」せずに通過する他のファイルをアップロードできるはずです)。