<input type="file">在JS中是FileUpLoad对象,具体应参考JavaScript方法。
1. 如何调整点击<input type=file>浏览按钮后文件选择对话框中可选择文件类型?
在WEB页面中,基于HTML无法对上传框进行文件类型的限制。虽然存在accept这个属性,但感觉没有什么用。它设置不了。你只能在用户提交之前,根据你允许上传的文件后缀名和用户所选择的文件进行对比,不允许用户继续上传,但不能提前限制用户不能选择非你允许的上传类型。你可以在客户端用js在上传之前进行判定,或者上传到后台判定。事实上,两面都需要进行检验,以保证数据库中只存在clean的数据。
其他方案:似乎存在基于ActiveX的方法可以实现上述功能,但用户使用时需要增加安全级别。也有人提出使用“command dialog control”进行实现的方案。
2. 如何清空用户已经选择的文件?
由于安全问题,上传控件<input type="file">的值一般不能通过JavaScript来修改。要修改其值,有两种方法,其一是使用activeX,其二是使用 JavaScript在客户端判断。
基于JavaScript也有两种方案,一种方法直接删除chkxsd2,另一种方法是新构造一个相同的input对象,如chkxsd。相应JS代码如下:
function
chkxsd(file)
...
{
s=file.value;
s=s.substr(s.lastIndexOf("."));
ext='*.xsd';
if(ext.indexOf("*"+s)==-1)
...{
alert("您选取的文件格式错误,请选择正确的文件("+ext+")!"); /**//*不需要降低IE安全级别,重新组装一个吧*/
document.getElementById("xsd").outerHTML="<input name="schemaFile" id ="xsd" type="file" class="inputtext" onpropertychange="chkxsd(schemaFile)">";
}
}
function chkxsd2(file) ... {
s=file.value;
s=s.substr(s.lastIndexOf("."));
ext='*.xsd';
if(ext.indexOf("*"+s)==-1)
...{
alert("您选取的文件格式错误,请选择正确的文件("+ext+")!");
var vv = document.getElementById("xsd");
vv.select();
document.execCommand('delete'); /**//*该方法仅适用于IE*/
}
}
s=file.value;
s=s.substr(s.lastIndexOf("."));
ext='*.xsd';
if(ext.indexOf("*"+s)==-1)
...{
alert("您选取的文件格式错误,请选择正确的文件("+ext+")!"); /**//*不需要降低IE安全级别,重新组装一个吧*/
document.getElementById("xsd").outerHTML="<input name="schemaFile" id ="xsd" type="file" class="inputtext" onpropertychange="chkxsd(schemaFile)">";
}
}
function chkxsd2(file) ... {
s=file.value;
s=s.substr(s.lastIndexOf("."));
ext='*.xsd';
if(ext.indexOf("*"+s)==-1)
...{
alert("您选取的文件格式错误,请选择正确的文件("+ext+")!");
var vv = document.getElementById("xsd");
vv.select();
document.execCommand('delete'); /**//*该方法仅适用于IE*/
}
}
文件上传的HTML代码如下:
<
form
name
="form1"
method
="post"
action
="./addtemplet.action"
enctype
="multipart/form-data"
>
< a > XML Schema文件 </ a >< input name ="schemaFile" id ="xsd" type ="file" class ="inputtext" accept ="*.xsd" value ="" onpropertychange ="chkxsd(schemaFile)" > *
</ form >
< a > XML Schema文件 </ a >< input name ="schemaFile" id ="xsd" type ="file" class ="inputtext" accept ="*.xsd" value ="" onpropertychange ="chkxsd(schemaFile)" > *
</ form >