Javascript上传文件大小

标签 javascript file upload size

我需要有关上传文件大小的帮助。我想添加最大 2MB 的文件。

我使用 javascript 代码,但我不擅长 javascript,所以如果你们可以将文件大小添加到我的代码中。谢谢。

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;
}

最佳答案

这是我最后写的代码

它仍然可以通过多种方式进行优化,因此它可以进行任何性能、语义或重构编辑。我不是专家。

代码解释

  1. var _maxFilsize 中,您必须写入允许的最大文件大小(以字节为单位)。
  2. Function Validate 具有参数 oForm,它需要一个 HTML 对象,通过它可以搜索输入字段。
  3. 将所有input元素存储在一个数组中,arrInputs
  4. arrInputs[i].type的值以string形式存储在变量inputType
  5. if/else语句中比较inputType与不同输入类型的值。
  6. 当满足条件时,每个 block 返回一个函数来验证匹配的输入字段
  7. 函数 validateImage 接受一个参数,该参数只是输入字段的属性,其中包含用户选择的文件列表,arrInputs[i].files
  8. validateImage 函数中有一个 for 循环遍历文件列表并验证它们的 typesize,并返回 truefalse 取决于文件的有效性。

代码

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
        }
    }
}

关于Javascript上传文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42280758/

相关文章:

iphone - Apple Appstore 上的客户评级?

javascript - 我使用 css zIndex 的简单 jquery 幻灯片无法正常工作

javascript - polymer 构建 : Warning [unknown-superclass] - Unable to resolve superclass superClass

c - 如何在C中处理文件时删除数据?

c++打开.txt文件并读取数字以放置在数组中

c - 从一个发射器到接收器用 C 读写文件(视频或图片格式)

php - PHP 检测文件是否完整或部分

javascript - 如何返回我的 <a> 标签内的 innerHTML?

javascript - 如何更改 div 内部 HTML 字体大小?

python - 在 Python 中通过 HTTP 将未知大小的数据从客户端流式传输到服务器