【发布时间】:2016-11-24 10:43:56
【问题描述】:
我在asp .net 中使用了html 文件上传控件,尝试限制脚本块中的文件扩展名。对于inArray 中的固定文件扩展名(.pdf,.txt,.doc,.docx,.xls,.xlsx,.eml,.msg),它可以正常工作。在数组变量(array1) 中检查相同时,它不起作用。
代码:
var AllowedFileExtensions = ".pdf,.txt,.doc,.docx,.xls,.xlsx,.eml,.msg";
var array1 = new Array();
array1 = AllowedFileExtensions.split(",");
for (var i = 0; i < array1.length; i++) {
array1[i] = "'" + array1[i] + "'";
}
var ext = $('#fileDocUpload').val().split('.').pop().toLowerCase();
ext = '.' + ext;
alert([array1]); // it throws the text = '.pdf','.txt','.doc','.docx','.xls','.xlsx','.eml','.msg'
alert(ext); // .pdf
此代码运行良好:
If ($.inArray(ext, ['.pdf','.txt','.doc','.docx','.xls','.xlsx','.eml','.msg']) == -1) {
if ($.inArray(ext.toString, array1) == -1) {
alert('invalid extension!');
return false
}
此代码无效:
if ($.inArray(ext.toString, array1) == -1) {
alert('invalid extension!');
return false
}
【问题讨论】:
-
你不需要
array1[i] = "'" + array1[i] + "'",你可以直接使用AllowedFileExtensions.split(",").indexOf(ext.toString) == -1 -
@Satpal,我已经尝试过了但没有成功,所以只有我尝试在它们之间添加引号..
-
@bgs:
ext.toString的值是多少? -
ext.toString = .pdf @MilindAnantwar
-
@bgs: 应该可以工作然后jsfiddle.net/qey9bLb3
标签: javascript jquery .net