12

ウェブサイトにアップロードしたい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 は引き続き無制限
4

1 に答える 1