4

我想上传一个文件,我想防止用户选择错误格式的文件。所以我使用 jQuery 脚本来验证文件扩展名。

这是输入

<input id="uploadCV" type="file" name="uploadCV" accept="application/pdf" />

这是jQuery脚本

if ($("#uploadCV").val().split(".")[1].toUpperCase() == "PDF") 
{
     return true;
}
else{
     return false;
}

此代码在 Firefox 上运行良好,但在 IE 中则不行。这是因为在 IE 中的文件名$("#uploadCV").val()不包含扩展名,例如它包含\directory\filename而不是\directory\filename.pdf.

有没有人遇到过这样的事情?有什么解决方法吗?

4

2 回答 2

3

我已经用 IE9 测试了这个,我现在没有 IE8 可以测试,这个函数也考虑最后一个点,在你的解决方案中,如果文件名包含像 this.is.a.pdf.pdf 这样的点,扩展名将是错误的

看看这个小提琴:http: //jsfiddle.net/HN7Ww/1/

$('#sendMe').click(function() {
    var file = $("#uploadCV").val();
    if (file.substr(file.lastIndexOf('.') +1).toUpperCase() == "PDF") 
    {
         $('.result').html('valid');
    }
    else
    {
           $('.result').html('not valid');

    }
});

.

<input id="uploadCV" type="file" name="uploadCV" accept="application/pdf" />
<div class="result"></div>
<input type="button" id="sendMe" value="send" />

如果您需要任何进一步的帮助,请告诉我

问候简

于 2013-08-21T15:10:11.710 回答
0
$('#fileid').change(function (e) {
    var ext = this.value.match(/\.(.+)$/)[1];
    if(ext.toLowerCase() !== "pdf" )
    {
        alert("Only Pdf format supported");
        e.preventDefault(); 
        if ($.browser.msie) {
            $('#fileid').replaceWith($('#').clone()); // This makes file selected to null in IE
      }
      else {
            $('#fileid').val("");
      }
    }

});

如果您选择非 pdf 文件,这将允许显示警报,如果您选择非 pdf 文件,也会清除选择。

于 2013-10-24T06:09:48.593 回答