クライアントHTML5を使用してファイルサイズをチェックしていますか?


84

HTML5ウェーブに乗ろうとしていますが、小さな問題に直面しています。HTML5以前は、フラッシュを使用してファイルサイズをチェックしていましたが、現在はWebアプリでフラッシュを使用しない傾向にあります。HTML5を使用してクライアント側でファイルサイズを確認する方法はありますか?

回答:


126

これは機能します。入力が変更されたときのために、イベントリスナー内に配置します。

if (typeof FileReader !== "undefined") {
    var size = document.getElementById('myfile').files[0].size;
    // check file size
}

IE 10、Mozilla FFx、Chromeで動作します。ありがとう!
Rahnzo 2014

正常に動作します。正しく使用していないだけです。入力のonchangeイベントにログオンすれば、問題はありません。
dandavis 2015

@dandavis私は答えのコードを使用しています。コードが正常に機能する場合、なぜそれを変更する必要があるのですか?
チャックルバット

1
@Chuckの例は、ファイルを選択する前にページの読み込み時にファイルリストを読み取ろうとするため、機能しません。
approxiblue

1
@チャック:わかりました、それはうまく機能します、そしてあなたはそれを貼り付けました、しかしそれだけでは十分ではありません。ファイルを入力した後にコンソールで実行すると、正常に機能していることがわかります。アプリの場合、コンソールは適切ではないため、入力が入力された後に実行されるイベントにコードを配置して、期待どおりに機能するようにする必要があります。誤解してすみません。
dandavis 2015

33

受け入れられた答えは実際には正しいですが、ファイル入力が変更されるたびに更新されるように、イベントリスナーにバインドする必要があります。

document.getElementById('fileInput').onchange = function(){
    var filesize = document.getElementById('fileInput').files[0].size;
    console.log(filesize);    
}

jQueryライブラリを使用している場合は、次のコードが役立つ場合があります

$('#fileInput').on('change',function(){
  if($(this).get(0).files.length > 0){ // only if a file is selected
    var fileSize = $(this).get(0).files[0].size;
    console.log(fileSize);
  }
});

fileSizeを、どのメトリックで表示するかはあなた次第です。


jQueryの例は機能しません。あなたがjQueryのを使用できるように表示されません.filesjsfiddle.net/edxvo4wa( -あなたはそれが変更された場合、それは動作します、私は解決策を考え出すされたとき、私はこれを自分で発見しましたdocument.getElementById)。
チャックルバット

1
@Chuckそこにエラーがあり申し訳ありません、私は私の答えを動作するもので更新しました
Ammadu 2015

7

HTML5 fie apiは、ファイルサイズのチェックをサポートしています。

ファイルAPIの詳細については、この記事をお読みください

http://www.html5rocks.com/en/tutorials/file/dndfiles/

<input type="file" id="fileInput" />


var size = document.getElementById("fileInput").files[0].size;

同様に、ファイルAPIは名前とタイプを提供します。


3

個人的に、私はこのフォーマットを選びます:

    $('#inputFile').bind('change', function(e) {
      var data = e.originalEvent.target.files[0];
      // and then ...
      console.log(data.size + "is my file's size");
      // or something more useful ...
      if(data.size < 500000) {
        // what your < 500kb file will do
      }
    }

1
500kbは実際には500 * 1024になると思います。大したことではありませんが、500,000bのファイルを持つエンドユーザーはそれを488kbと見なし、拒否します。そして、ここで大きな欲求不満が始まります
Apolo 2018

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.