我需要有关上传文件大小的帮助。我想添加最大 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;
}
最佳答案
这是我最后写的代码
它仍然可以通过多种方式进行优化,因此它可以进行任何性能、语义或重构编辑。我不是专家。
代码解释
- 在
var _maxFilsize
中,您必须写入允许的最大文件大小(以字节为单位)。 Function Validate
具有参数oForm
,它需要一个HTML 对象
,通过它可以搜索输入字段。- 将所有
input
元素存储在一个数组中,arrInputs
。 - 将
arrInputs[i].type
的值以string
形式存储在变量inputType
中 - 在
if/else
语句中比较inputType
与不同输入类型的值。 - 当满足条件时,每个 block
返回
一个函数
来验证匹配的输入字段 - 函数
validateImage
接受一个参数,该参数只是输入字段的属性,其中包含用户选择的文件列表,arrInputs[i].files
。 - 在
validateImage
函数中有一个 for 循环遍历文件列表并验证它们的type
和size
,并返回true
或false
取决于文件的有效性。
代码
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/