現在、新しいHTML5ドリブンアップロードサイトを実装しようとしています。セキュリティ上の理由から、私はアップロードするファイルの種類に関しては通常非常に制限されていたので、通常はZIPファイルのみがバックエンドから受け入れられました。 ZIPを使用して困難を持っているように見えるの周りの多くの人々があるように思われるように、私は私はそれを試してみると次のように何かをしようと思いました: Javascript Filereader - ファイルタイプのチェック
- ファイルを選択します各ファイルは、それがZIPファイルかどうかを判断します(それは馬鹿な証拠ではありませんが、気にしないでください)。
- ZIPファイルを直接アップロードする
- 他のすべてのファイルを取り出し、その場でZIPアーカイブを作成し、新しく作成したアーカイブをアップロードします。
は全体のことは、ファイルの種類のチェックを除いて、うまく機能:私は「スライス」を使用してい
//'files' is an array of files retrieved from <input type='file'...for instance
function checkFileType(files, callback) {
for (var i = 0; i < files.length; i++) {
var fileReader = new FileReader();
fileReader.onloadend = function (e) {
var arr = (new Uint8Array(e.target.result)).subarray(0, 4);
var header = "";
for (var j = 0; j < arr.length; j++) {
header += arr[j].toString(16);
}
if (header == '504b34')
;
else
callback("something");
};
var blob = files[i].slice(0, 4);
fileReader.readAsArrayBuffer(blob);
}
}
、ファイルが巨大な場合にのみ(4つの最初のバイトを読むためにここにIメモリを台無しにしたくない)。私に悩む唯一のこと:スライスのため、配列内の実際のファイルへの参照が失われます。私は配列からZIPとして検出されているファイルを削除し、それらを即座にアップロードし始める必要があります。
その後、配列内の残りのファイルはすべて圧縮されます。私のアプローチは、...そのせいで行方不明「参照」の