1

需要进行简单的操作。如果 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 的两种情况下,结果是相同的。但是如果使用 match - if 语句找不到字符串。

http://jsfiddle.net/mCjSW/1/

4

2 回答 2

1

.match()返回一个数组,因此您必须使用:

var fileExt = fileName.match(/\.[a-z]{3,4}$/i)[0];

MDN 文档

于 2012-12-27T10:43:44.013 回答
1

直接使用match()检查文件扩展名怎么样?

var f = 'foo.png';

if (!f.match(/\.(jpe?g|png|pdf)$/))
    alert('invalid extension');

由于我们不需要返回的数组 by match(),我们可以在test()这里使用:

if (!/\.(jpe?g|png|pdf)$/.test(f))
    alert('invalid extension');

请记住,查看文件的扩展名并不能确保其内容与扩展名的文件类型匹配;但是,过滤扩展可确保用户不会意外选择/上传错误的文件。查看文件的 MIME 类型绝对是可取的,但这样的检查必须在服务器端进行(当然,有很多方法可以绕过使用 javascript 进行的检查,最明显的是停用浏览器中的 javascript 支持)。

于 2012-12-27T10:57:42.620 回答