1

Any idea how to get size in bytes of an image within a validating javascript function so that user will be prompted to pick a valid image size. I have seen other answers which handle this out of the form logic, but I want to know if I can get the size within the validation javascript function. Thanks

Here is my Form related code:

<form action="index.php" method="post" enctype="multipart/form-data" onsubmit="return validateForm(this)">
    <script>
        function validateForm(form) {
            var image_name = form.image.value;
            if (image_name == null || image_name == "") {
                alert('Select an image');
                return false;
            } else return true;
        }
    </script>
    <label> Image (300 KB max.) <input type="file" name="image" /> </label>
    <input type="submit" value="Submit" name="submit" />
</form>
4

2 に答える 2

2

HTML5 ファイル API は、ファイル サイズ チェックをサポートしています。 http://www.html5rocks.com/en/tutorials/file/dndfiles/

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

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

or  
     var size = document.getElementsByName("image")[0].files[0].size; // edit added

しかし、ファイルサイズについてもサーバー側の検証を行うことをお勧めします。

: これは古いブラウザでは機能しません

この質問も確認してください:
クライアント側でファイルのアップロードサイズを検出していますか? 選択したアップロード制限を超えた場合、アップロード プロセスを停止する

フィドルhttp://jsfiddle.net/wKvf8/

于 2013-05-24T21:45:10.403 に答える
1
 <?php
  if(isset($_POST['submit'])) {
     $first_name=$_POST['fname'];
    echo 'Entered First Name = '.$first_name;
 }
 ?>
 <html>

 <form method="post" enctype="multipart/form-data" action="">
     <label for="fname"> First Name: </label> <input  type="text" name="fname"  /> <br /><br />
     <label for="file"> Select File: </label> <input  type="file" id="file" />
     <input type="submit" name="submit" value="Submit" />
 </form>

 <script>
 document.forms[0].addEventListener('submit', function( evt ) {
     var file = document.getElementById('file').files[0];

     if(file && file.size < 18000) { 
         //Submit form
        alert('Size is valid');
     } else {
        alert('pic too big');
        evt.preventDefault();
     }
 }, false);
 </script>
 </html>
于 2013-05-26T17:06:01.617 に答える