文件上传中的javascript正则表达式和文件类型

时间:2014-05-06 05:27:05

标签: javascript regex file-upload

我的页面中有文件上传。我定义了一个名为的属性:" 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;)返回

  

然后警告火灾。 为什么?以及我如何解决这个问题? 感谢。

1 个答案:

答案 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();
    }    
}