Проверка размера изображения с помощью проверки JQuery не работает - PullRequest
0 голосов
/ 31 января 2019

Я загружаю изображение в папку, но перед загрузкой я проверяю расширение и размер изображения.Я использую проверку jQuery.

Я проверил SO перед загрузкой вопроса и нашел код.Но проблема в том, что когда я загружаю изображение размером менее 100 КБ (фактический размер изображения составляет 98 КБ), я получаю сообщение об ошибке "File size must be less than 5".Я попробовал другое изображение, которое 3.8MB, но все еще получаю ту же ошибку.

Не могли бы вы мне помочь, какой размер изображения я должен использовать здесь?и каков размер файла: 5?

Может кто-нибудь помочь мне в этом вопросе?

$.validator.addMethod('filesize', function(value, element, param) {
  return this.optional(element) || (element.files[0].size <= param)
}, 'File size must be less than {0}');

$(function($) {
  "use strict";
  $('#form').validate({
    rules: {
      image: {
        //required: true,
        extension: "jpg,jpeg,png",
        filesize: 5,
      }
    },
  });
});
<form id="form" method="post" action="">
  <input type="file" name="image" />
  <input type="submit" value="Upload" />
</form>

<script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/additional-methods.js"></script>

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Обычно в этих типах размеры файлов указываются в байтах.Таким образом, вы должны умножить его на 1024 множителя соответственно.Например, если вы хотите проверить, меньше ли размер файла, чем 5 МБ, вы должны использовать

image: {
  extension: "jpg,jpeg,png",
  filesize: 5*1024*1024,
}
0 голосов
/ 31 января 2019

Ваш параметр установлен только на 5

$('#form').validate({
    rules: {
      image: {
        ....
        filesize: 5,  ...

Это 5 БАЙТОВ , поэтому, конечно, вы получите сообщение об ошибке для любого файла размером 98 кБ или3,8 МБ.Поскольку оба они имеют размер больше 5 байт, они не соответствуют вашему пользовательскому правилу, которое допускает только файлы меньше , чем 5 байт.

Попробуйте 5242880, если вы хотите разрешить файлы размером менее 5 МБ.

filesize: 5242880 // <- 5 MB

$.validator.addMethod('filesize', function(value, element, param) {
  return this.optional(element) || (element.files[0].size <= param)
}, 'File size must be less than {0} bytes');

$(function($) {
  "use strict";
  $('#form').validate({
    rules: {
      image: {
        //required: true,
        extension: "jpg,jpeg,png",
        filesize: 5242880 // <- 5 MB
      }
    },
  });
});
<form id="form" method="post" action="">
  <input type="file" name="image" />
  <input type="submit" value="Upload" />
</form>

<script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/additional-methods.js"></script>
...