使用正则表达式来确保通过input[type="file"]
上传的文件是MP3。有些事情出错了,我正在测试的文件没有通过。jQuery检查文件上传是否为mp3
感谢您的帮助!
HTML
<input type="file"/>
的JavaScript
var file = $input.find('input[type="file"]'),
val = file.val(),
type = /^([a-zA-Z0-9_-]+)(\.mp3)$/;
submit.attr('disabled', 'disabled').addClass('deac');
if (!val){
modal("The upload can't be empty.", true);
} else if (!type.test(val)){
modal("The song must be in MP3 format.", true);
/***********
*
* Getting caught here- even with a valid .mp3 file that _should_ pass the regex
* in my test case using mamp as a localhost, val = C:\fakepath\1.mp3
*
***********/
} else {
/* Success */
}
如果“VAL”为“C:\ fakepath \ 1.MP3” ,那么很明显为什么它没有通过 - 正则表达式不允许“:”或“\”。 – Pointy
此外,你可能应该允许大写“MP3”,以防有人从FAT文件系统上传。 (当然你的服务器应该检查实际的文件内容,如果确保只有真正的MP3文件上传真的很重要;文件名可以被简单地欺骗。) – Pointy
@Pointy正则表达式的方式超出了我,他们看起来像胡言乱语。请在下面回答一个建议,以便我可以给你信用,并把这一个从我的名单中删除? – technopeasant