0

簡単なアップロード フォーム (.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 の正しいチェックはオプションである必要があるためです (「解析」せずに通過する他のファイルをアップロードできるはずです)。

4

2 に答える 2