简体   繁体   English

JavaScript上传文件大小

[英]Javascript upload file size

I need help with file size on upload. 我需要有关上传文件大小的帮助。 i'd like to add file maximum size 2MB. 我想添加文件最大大小2MB。

I use javascript code and i'm not good with javascript so if you guys can add file size into my code. 我使用javascript代码,但我对javascript不太满意,因此如果你们可以在我的代码中添加文件大小。 Thanks. 谢谢。

 var _validFileExtensions = [".jpg", ".jpeg", ".png"]; function Validate(oForm) { var arrInputs = oForm.getElementsByTagName("input"); for (var i = 0; i < arrInputs.length; i++) { var oInput = arrInputs[i]; if (oInput.type == "file") { var sFileName = oInput.value; if (sFileName.length > 0) { var blnValid = false; for (var j = 0; j < _validFileExtensions.length; j++) { var sCurExtension = _validFileExtensions[j]; if (sFileName.substr(sFileName.length - sCurExtension.length, sCurExtension.length).toLowerCase() == sCurExtension.toLowerCase()) { blnValid = true; break; } } if (!blnValid) { alert("Sorry, " + sFileName + " is invalid, allowed extensions are: " + _validFileExtensions.join(", ")); return false; } } } } return true; } 

This is the code I ended up writing 这是我最终写的代码

It can still be optimized in various ways, so its open for any performance, semantic or refactoring edits. 仍然可以通过各种方式对其进行优化,因此它可用于任何性能,语义或重构编辑。 I am not an expert. 我不是专家。

Code Explained 代码说明

  1. In var _maxFilsize you have to write size of max file size to be allowed in bytes. var _maxFilsize您必须编写允许的最大文件大小(以字节为单位)。
  2. Function Validate has parameter oForm which expects an HTML object , through which it can search for input fields. Function Validate参数oForm需要一个HTML object ,通过它可以搜索输入字段。
  3. Store all input elements in an array, arrInputs . 将所有input元素存储在数组arrInputs
  4. Store value of arrInputs[i].type in string form in variable inputType arrInputs[i].typestring形式存储在变量inputType
  5. Compare the value of inputType with different input types in if/else statements. if/else语句中将inputType的值与不同的输入类型进行比较。
  6. When condition is met, each block returns a function that validates the matched input field 满足条件时,每个块都returns一个function ,用于验证匹配的输入字段
  7. Function validateImage takes an argument which is simply the input field's property that contains list of files selected by user, arrInputs[i].files . validateImage函数接受一个参数,该参数只是输入字段的属性,其中包含用户arrInputs[i].files选择的文件列表。
  8. In validateImage Function there is a for loop that iterates over the list of files and validates their type and size , and returns true or false depending upon validity of file. validateImage函数中,存在一个for循环,该循环遍历文件列表并验证文件的typesize ,并根据文件的有效性返回truefalse

Code

var _maxFilesize = 2000000;// in bytes
function Validate(oForm) {
    var arrInputs = oForm.getElementsByTagName("input");
    var inputType;
    var i = 0;
    var arrLength = arrInputs.length;
    for (i; i < arrLength; i++) {
        inputType =arrInputs[i].type.toString();
        if (inputType === "file"){
            return validateImage(arrInputs[i].files);//calls function for validating image
        }else if(inputType === "email"){
            //call email validating function
        }//add validation for more fields
    }
}
function validateImage(file){
    var j = 0;
    var NumberOfFiles = file.length;
    for(j; j< NumberOfFiles;j++){
        if ((file[j].type === "image/jpeg" || file[j].type === "image/png")&& (file[j].size)<= _maxFilesize){
            return true //or whatever you want to do here like calling a function to upadate view, or something
        }
        else{
            return false //or whatever you want to do here like calling a function to upadate view, or something
        }
    }
}

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

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