我只是兼容非IE的实现JS触发input的click事件,虽然隐藏了file-input,它的click触发任然通过button-input的手动click所引起,不存在安全限制问题。 至于如何实现文件上传,可看看cloudgamer的研究SITE BY http://www.cnblogs.com/cloudgamer/archive/2008/10/20/1314766.html
通过提交页面 模拟 选择文件,然后确认 <input type="file" id="local_file" name="local_file" size="50" style="display:none"/>后台通过下面这个类获取文件流 MultipartFormData data = new MultipartFormData(request); MultipartFormData.Entity entity = data.getEntity("local_file"); entity.getInputStream() 由于是手动选择文件,所以获取的流为空值要求是模拟file来上传文件获取选择的文件流
<input type='file' id='loca' style='display:none'>
<input type='button' id='test' value='浏 览'>
<input type='button' id='uper' value='上 传'>
<script>
! +"\v1" || (HTMLElement.prototype.click = function(){
var eve = this.ownerDocument.createEvent("MouseEvents");
eve.initMouseEvent("click", true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
this.dispatchEvent(eve);
});function $(o){return document.getElementById(o) || o}
$("test").onclick = function() {
$("loca").click();
}
$("uper").onclick = function() {
alert($("loca").value); // up data
}
</script>
此控件是基于标准HTTP协议实现的文件上传功能。优势是扩展性非常好,整合简单,支持批量上传文件和上传文件夹功能,适合各种简单WEB项目。
另外一个特点是支持自动上传指定的本地文件。单文件上传演示单文件整合代码: 服务器返回消息:<input id="txtFilePath" type="text" size="50" />
<script type="text/javascript" language="javascript">
var uploaderMgr = new HttpUploaderSingleMgr();
uploaderMgr.Config["PostUrl"] = "http://localhost:8080/asp.net/upload.aspx";
uploaderMgr.Load();
uploaderMgr.CompleteHook = function(msg)
{
document.getElementById("txtFilePath").value = msg;
}; window.onload = function()
{
uploaderMgr.Init();
};
</script>
我们公司去年做的一个政府的OA项目就是使用的第三方控件。
至于如何实现文件上传,可看看cloudgamer的研究SITE BY http://www.cnblogs.com/cloudgamer/archive/2008/10/20/1314766.html
<input type="file" id="local_file" name="local_file" size="50" style="display:none"/>后台通过下面这个类获取文件流
MultipartFormData data = new MultipartFormData(request); MultipartFormData.Entity entity = data.getEntity("local_file");
entity.getInputStream()
由于是手动选择文件,所以获取的流为空值要求是模拟file来上传文件获取选择的文件流