【发布时间】:2013-03-29 23:04:16
【问题描述】:
使用正则表达式确保通过input[type="file"] 上传的文件是 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”,那么它为什么没有通过就很清楚了——正则表达式不允许“:”或“\”。
-
另外,您可能应该允许大写“MP3”,以防有人从 FAT 文件系统上传。 (当然,如果确保只上传真正的 MP3 文件真的很重要,您的服务器应该检查实际文件内容;文件名很容易被欺骗。)
-
@Pointy 正则表达式超出了我的范围,它们看起来像胡言乱语。介意在下面回答一个建议,这样我就可以给你信用并将这个从我的列表中删除?
标签: javascript regex file upload submit