jQuery检查文件扩展名在IE中不起作用

时间:2013-08-21 13:47:07

标签: javascript jquery internet-explorer file-upload

我想上传文件,我想阻止用户选择格式错误的文件。所以我使用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

以前有人遇到过这样的事吗?有没有解决方法?

2 个答案:

答案 0 :(得分: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" />

如果您需要任何进一步的帮助,请与我们联系

问候 扬

答案 1 :(得分: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文件,也会清除选择。