3

複数のファイル入力を持つことができるフォームがあります(複数選択ではなく、入力ごとに1つのファイル)。

フォームを送信するときに、すべてのコンテンツの配列を取得し、input[type="file"]FileReaderを使用して、アップロードする前にファイルサイズを確認し、ファイルが大きすぎる場合にそれを防ぐにはどうすればよいですか?

$('#MyForm').submit(function() {

});

私が見つけることができる限られたFileReaderドキュメントからこれをまったく理解することはできません。または、とにかく、それを機能させないでください...

4

2 に答える 2

8

問題は、jQueryで入力されたファイルからファイルを選択しようとした方法でした。解決策の例を次に示します。

入力ファイルが1つで、ユーザーが選択できるファイルは1つだけの場合:

// Get the file
var file = $('input[type="file"]').get(0).files[0];

// File size, in bytes
var size = file.size;

1つのファイル入力があり、複数のファイルを選択する場合は、次を選択します。

// Get an array of the files
var files = $('input[type="file"]').get(0).files;

// Loop through files
for (var i=0; file = files[i]; i++) {

    // File size, in bytes
    var size = file.size;
}

複数のファイルを入力し、複数のファイルを選択する場合は、次を選択します。

// Loop through each file input
$('input[type="file"]').each(function(i) {

    // Get an array of the files for this input
    var files = $(this).get(0).files;

    // Loop through files
    for (var j=0; file = files[j]; j++) {

        // File size, in bytes
        var size = file.size;
    }
});

Fileオブジェクトを取得したら、アクセスできるプロパティは次のとおりです(サイズは別として)。

https://developer.mozilla.org/en-US/docs/DOM/File#Properties

于 2012-12-06T16:53:56.887 に答える
0

あなたはプロパティを探していsizeます:

var anyOversize =
    Array.prototype.some.call(document.querySelectorAll('input[type="file"]'), function(fileInput) {
        return Array.prototype.some.call(fileInput.files, function(file) {
            return file.size > limit;
        });
    });

(ちなみに、これはバイト単位のサイズです。)

于 2012-12-06T16:07:20.423 に答える