日期:2014-05-17  浏览次数:20834 次

Html file标签试用
在IE6中,file标签可以输入文件路径。但是在firefox中,浏览器则不允许输入。浏览器这么做的原因可能是为了减少出错的可能,IE则充分相信用户可以把握自己的输入信息。但是事实证明,这种输入错误的几率非常大,特别是在BS软件结构成为企业级应用软件的主流架构的今天。笔者就遇到这样的问题,使用frm.submit()提交时,如果用户输入了不合法的文件路径。该函数会抛出异常,导致前台代码运行错误。
尝试使用文件名校验,和判断文件是否存在等办法来校验,都未达到理想的效果。
偶然的想法,使用try catch来发出提示信息。代码如下
<html>
<head>
<script>
var context_path = '/learn';

function on_file_selected(){
var frm = document.getElementById('frmUpload');
if(!frm){
return ;
}
var fileElm = document.getElementById('fileInput');
if(!checkFileFullName(fileElm.value)){
alert('文件不存在!');
return ;
}
var url = context_path + '/file/upload.jsp?';
frm.action = url;
try{
frm.submit();
}catch(e){
alert('上传文件出错!');
}
}

function checkFileFullName(path){
return true;
}
</script>
</head>
<body>
<form id="frmUpload" method="post" name="frmUpload" action="">
<input type="file" name="file" onchange="on_file_selected()" id="fileInput"
style="font-size:13px;width:200px;" />
</form>
</body>
</html>
----------------------------------------------
有读到此信息的哥们,不妨讨论一下更合理的解决办法。