简体   繁体   English

jQuery文件上传大小和类型限制

[英]JQuery File Upload Size and Type Restriction

I have a JQuery multi-file upload solution that requires restriction on file format and size. 我有一个JQuery多文件上传解决方案,该文件要求限制文件格式和大小。

Here's the JSFIDDLE , and the JS code follows below: 这是JSFIDDLE ,下面是JS代码:

$(document).ready(function() {
  if (window.File && window.FileList && 
window.FileReader) {
    $("#files").on("change", function(e) {
      var files = e.target.files,
        filesLength = files.length;
      for (var i = 0; i < filesLength; i++) {
        var f = files[i]
        var fileReader = new FileReader();
        fileReader.onload = (function(e) {
          var file = e.target;
          $("<span class=\"pip\">" +
            "<img class=\"imageThumb\" src=\"" + e.target.result + "\" title=\"" + file.name + "\"/>" +
            "<br/><span class=\"remove\"><i class='fa fa-times'></i></span>" +
            "</span>").insertAfter("#files");
          $(".remove").click(function() {
            $(this).parent(".pip").remove();
          });
        });
        fileReader.readAsDataURL(f);
      }
    });
  } else {
    alert("Your browser doesn't support to File API")
  }
});

$(document).on('click', '[name=Reset]', function(){
   $('.pip').remove();
})

The desired outcome is to allow me to set both the file type and size that can be easily changed. 理想的结果是允许我设置可以轻松更改的文件类型和大小。

Thanks for any help! 谢谢你的帮助!

You can set a condition right after you declare a value to your var f 您可以在为var f声明值后立即设置条件

if(f.size > 200000 || f.type !="image/png"){
   alert("File too big or not a valid Type");
   $("#files").val("");
}

You can also console.log(f); 您也可以console.log(f); for more properties 更多的属性

Here is my version of your function: 这是我的函数版本:

$(document).ready(function() {
    if (window.File && window.FileList && window.FileReader) {
        $("#files").on("change", function(e) {
            var files = e.target.files,
            filesLength = files.length;
            for (var i = 0; i < filesLength; i++) {
                var f = files[i];
                if(f.size > 200000 || f.type !="image/png"){
                    alert("File too big or not a valid Type");
                    $("#files").val("");
                }
                else{
                    var fileReader = new FileReader();
                    fileReader.onload = (function(e) {
                        var file = e.target;
                        $("<span class=\"pip\">" +
                            "<img class=\"imageThumb\" src=\"" + e.target.result + "\" title=\"" + file.name + "\"/>" +
                            "<br/><span class=\"remove\"><i class='fa fa-times'></i></span>" +
                            "</span>").insertAfter("#files");
                        $(".remove").click(function() {
                            $(this).parent(".pip").remove();
                        });

                    });
                    fileReader.readAsDataURL(f);
                }
            }
        });
    } else {
        alert("Your browser doesn't support to File API")
    }
});

$(document).on('click', '[name=Reset]', function(){
    $('.pip').remove();
})

You can check the size property of the file and the type property of the file. 您可以检查文件的size属性和文件的type属性。

var maxSize = 20000;//maximum size for the file
var acceptedTypes = ["image/png", "image/jpg"];//accepted image types
if(f.size>maxSize){
    //file is too big
}
if(acceptedTypes.indexOf(f.type)<0){
   //file type is not accepted
}

JSFiddle: https://jsfiddle.net/ordmsw8p/ JSFiddle: https ://jsfiddle.net/ordmsw8p/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM