3

ユーザーが複数の画像を追加し、[保存] ボタンを押すと、それらを他のデータと一緒に一度にアップロードできる Web アプリがあります。POST データが送信される前にその合計サイズを計算しようとしています。これにより、リクエストを複数のリクエストに分割して、PHPpost_max_sizemax_file_uploadsエラーの発生を回避できます。

現在、このコードを使用して、HTML5 ファイル API (プロパティ)を使用して画像の全体サイズのみを確認しています。size

// Calculate size of all files being submitted
var ttlSize = 0;
$('form').find('input[type=file]').each(function() {
    ttlSize += this.files[0].size;
});

if (ttlSize > 4 * 1048576) { // >4MB
    // this will exceed post_max_size PHP setting, now handle...
} else if ($('form').find('input[type=file]').length >= 10) {
    // this will exceed max_file_uploads PHP setting, now handle...
}

残りの POST データを含めて、より正確にしたいと思います。これは可能ですか?

4

2 に答える 2

1

ファイルアップロードフィールドを除いて、シリアル化されたフォームの長さを数えることで推定できます。したがって、これらの線に沿ったどこかになります。

$("form").not("[type='file']").serialize().length;

于 2012-11-16T16:37:32.770 に答える
0

セキュリティ上の理由から、ファイル アップロード要素へのアクセスはファイル名に制限されています。クライアント マシン上のファイルにアクセスする唯一の方法は、新しい FormData オブジェクトを介して html5 を使用することです。ここを見てください:FormData - Document Object Model。このオブジェクトがないと、ファイルのサイズを取得できません。それ以外の場合: 非同期アップロードを実装しないのはなぜですか?

于 2012-11-16T17:40:28.437 に答える