需要进行简单的操作。如果 fileExt 不是 .jpg .jpeg .png .pdf,则应显示警告。
var fileName = 'upload-success.png';
var fileExt = fileName.match(/\.[a-z]{3,4}$/i); // fails
// var fileExt = '.png'; // works
if (fileExt !== ".jpg" && fileExt !== ".jpeg" && fileExt !== ".png" && fileExt !== ".pdf") {
alert('Incorrect Extension: '+fileExt);
}
在两种情况下设置 fileExt 结果是一样的。 但是在使用匹配的情况下 - if 语句找不到字符串。
最佳答案
直接用match()
怎么样?检查文件扩展名?
var f = 'foo.png';
if (!f.match(/\.(jpe?g|png|pdf)$/))
alert('invalid extension');
由于我们不需要match()
返回的数组,我们可以只使用test()
。这里:
if (!/\.(jpe?g|png|pdf)$/.test(f))
alert('invalid extension');
请记住,查看文件的扩展名并不能确保其内容与扩展名的文件类型相匹配;但是,过滤扩展名可确保用户不会意外选择/上传错误的文件。查看文件的 MIME 类型绝对是可取的,但这种检查必须在服务器端完成(当然有很多方法可以绕过使用 javascript 完成的检查,最明显的是在浏览器中停用 javascript 支持)。
关于javascript - if 语句在应用 match() 方法时找不到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14053308/