我想上传文件,我想阻止用户选择格式错误的文件。所以我使用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
。
以前有人遇到过这样的事吗?有没有解决方法?
答案 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文件,也会清除选择。