我的页面中有文件上传。我定义了一个名为的属性:" filetype"。
<input filetype=".jpg|.jpeg|.png" id="attachments" type="file">
我想从文件上传中选择文件时,使用javascript,我检查文件类型:
function onSelect(e) {
if (!e.files[0].extension.match('/' + $("input[type='file']").attr('filetype') + '/i')) {
alert('file type is wrong');
e.preventDefault();
}
}
现在,当我选择.jpg格式的文件时,e.files [0] .extension将是
.JPG
和 &#39; /&#39; + $(&#34;输入[type =&#39; file&#39;]&#34;)。attr(&#39; filetype&#39;)+&#39; / i&#39;是
。/ JPG | .JPEG | .PNG / I
但是e.files [0] .extension.match(&#39; /&#39; + $(&#34;输入[type =&#39; file&#39;]&#34;)。 attr(&#39;文件类型&#39;)+&#39; / i&#39;)返回
空
然后警告火灾。 为什么?以及我如何解决这个问题? 感谢。
答案 0 :(得分:1)
您无法使用连接构建文字正则表达式,您需要使用RegExp构造函数。
我建议你做以下事情:
<input data-filetype="jpg|jpeg|png" id="attachments" type="file">
然后:
function onSelect(e) {
// "this" is the file input
// if you attach the function to an event
// like `$('input:file').change(onSelect)`
var filetypes = $(this).data('filetype');
var re = RegExp('\\.('+ filetypes +')$','i');
if (!re.test(e.files[0].extension)) {
alert('file type is wrong');
e.preventDefault();
}
}