ウェブサイトにアップロードしたい64000個の小さな画像があります(既存の検証を使用するため、FTPなどはありません)。数百または数百の画像に使用するために、HTML5 [multiple] type=file 入力をしばらく前に作成しました。数百は問題ありません。画像はバッチ処理され、サーバーに送信されます。
しかし、〜 16000 個の画像のフォルダーを選択すると、ファイル入力の FileList が空になります... onchange イベントがトリガーされますが、ファイル リストは空です。ブラウザ (またはファイル システムか OS か?) は、これほど多くのファイルを選択する際に問題があるようです。
何が最大になるかを判断するのに役立つ非常に小さなツールを作成しました:http: //jsfiddle.net/rudiedirkx/Ehhk5/1/show/
$inp.onchange = function(e) {
var l = 0, b = 0;
for (var i=0, F=this.files, L=F.length; i<L; i++) {
l += F[i].name.length;
b += F[i].size;
}
$nf.innerHTML += this.files.length + ' files: ' + (b/1000/1000) + ' MB / ' + l + ' chars of filename<br>';
};
カウントするだけです:
- ファイル数
- すべてのファイル名を結合した文字数
- 合計ファイル サイズの MB 数
これを試してみると、ほとんどの場合:
1272 ファイル: 176.053987 MB / 31469 文字のファイル名
(32 ビットおよび 64 ビットの Win7、Chrome 26-52)
次の画像 (失敗) は次のようになります。
- 明らかなカットオフではない 1273 枚の画像
- ファイルサイズは 176 ~ 177 MB で、明確なカットオフではありません
- ファイル名は 32000 文字未満であり、明らかなカットオフでもありませんが、32k のように見えるかもしれません...
私の計算では、1 MB = 1000^2 バイトであり、1024^2 ではありません。(これは MiB になりますが、私の OS/ファイルシステム/ブラウザーが一致しない可能性があります。)
私の質問は、なぜこれほど多くのファイルがあるのですか? なぜこのマックス?OS依存ですか、それともブラウザ依存ですか?その仕様はどこにありますか?JSのせい?「file input max files」などを検索すると、[max] 属性のみが検索されますが、これは無関係です。
その他のテスト結果:
- Firefox では、最大値がはるかに高いようです。少なくとも「2343 個のファイル: 310.66553999999996 MB / 60748 文字のファイル名」(ここにあるすべてのファイルです)
- Firefoxでも:「16686ファイル:ファイル名の55.144415 MB / 146224文字」(はるかに小さいが、より多くのファイル)
アップデート
- Chrome 52 canary Windows はまだ 32k のファイル名です
- Firefox (44+) Windows は引き続き無制限