Я пытаюсь предотвратить изменение ввода файла, если я условно сообщаю пользователю, что файл слишком велик, но даже фиксируя изменение и предотвращая использование по умолчанию, он все еще заполнен, т.е.

enter image description here

  // CHECK FILE ISNT ABOVE 500MB ON CHANGE
      $(".upload-file").change(function (e) {

        // conditional checks
        var fileSize = $('.upload-file').get(0).files[0].size; // in bytes

        if (fileSize > 500000000) {
          e.preventDefault();
          swal('File size is more than 500 MB, please upload a smaller file. Support for larger files will be rolled out soon.');
          return false;
        }



      });

Вот мой код, что я делаю не так?

0
Anthony 29 Авг 2017 в 19:30

3 ответа

Лучший ответ

Если вы хотите сбросить ввод файла:

$(".upload-file").val(null);
3
Prashant Pimpale 13 Дек 2018 в 11:23

Я бы предложил сбросить тип ввода = файл, если условие не совпадает, как показано ниже:

$('.upload-file').on("change", function (e) {
    if (this.files[0] != null) {
        var fileSize = this.files[0].size;
        if (fileSize > 50) {
            alert("File too large!");
            var control=$("#"+$(this).attr('id'));//get the id
            control.replaceWith(control = control.clone().val(''));//replace with clone
            return;
        }
        else {
            alert("File ok");
        }
    }
});

Также обратите внимание, что this.files [0] .size возвращает размер файла в байтах. Таким образом, согласно вашей проверке, вы не разрешите загружать файл размером более 50 байт.

0
cse_vikashgupta 29 Авг 2017 в 16:33

Приведенный ниже код проверит размер файла, если он превышает ваш порог (maxFileSize), он выдаст ошибку и сбросит диалог загрузки файла. Это предотвращает любую дальнейшую обработку файла, например, если вы каким-либо образом манипулируете файлом перед отправкой формы.

$(document).ready(function() {
	$('.upload-file').on('change', function(e) {
     try {
     var fileSize = 0;
	 var maxFileSize = 5 // in mb
      fileSize = $('.upload-file')[0].files[0].size //size in kb
      fileSize = fileSize / 1048576; //size in mb 
 
      if (fileSize > maxFileSize) throw "Too big";
      }
      catch (e) {
      alert("Sorry, file is too large. Please select one that is smaller than "+maxFileSize +' Mb');
	  $('.upload-file').val(null);
      }
      

	});	
});	
0
Noel Swanson 1 Окт 2018 в 19:04