我在asp .net
中使用了html文件上传控件,尝试限制脚本块中的文件扩展名。对于(.pdf,.txt,.doc,.docx,.xls,.xlsx,.eml,.msg)
中的固定文件扩展名inArray
,它已正常运行。在数组变量(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
}
答案 0 :(得分:1)
这是因为您正在修改array1以在每个值中添加额外的引号。它将数组修改为:
["'.pdf'", "'.txt'", "'.doc'", "'.docx'", "'.xls'", "'.xlsx'", "'.eml'", "'.msg'"]
您不需要将值放在引号中。在此处将值转换为数组时,.split()
将处理它:
var array1 = AllowedFileExtensions.split(",");
if ($.inArray(ext.toString, array1) == -1) {
alert('invalid extension!');
return false
}