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

jsp 实现本地文件夹目录遍历并上传此目录下的文件
    希望用户能够通过自己的浏览器选择一个本地的文件夹目录,并将此目录下的所有文件上传到服务器中。如果是单个文件用file控件很好实现,如果需要遍历本地文件夹目录并上传该如何实现呢。
    我在网上找到了一个相关的例子,是利用ActiveX来做的,但似乎不完全,后台java程序中继承的Action类没有交代。
    这方面资料太少,急用,还望大神指点!
下面是找的这个例子:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>UpLoad</title>
<script type="text/javascript" >
function fileupload(filepath){  
if(filepath!=""){    
sendFileToServer(filepath);  
}  else{  
alert("请选择要上传的文件");  

}
function callback() {   
if (xmlhttp.readyState == 4) {       
var responseText = xmlhttp.responseText;          
}
}
function sendByteStreamToServer(stream,url){  
if (window.XMLHttpRequest) {      
xmlhttp = new XMLHttpRequest();       
if (xmlhttp.overrideMimeType) {          
xmlhttp.overrideMimeType("text/xml")      
}  
} else if (window.ActiveXObject) {       
var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];      
for (var i = 0; i < activexName.length; i++) {          
try {              
xmlhttp = new ActiveXObject(activexName[i]);              
break;          
} catch(e) {               
e.print()          
}    


xmlhttp.onreadystatechange = callback;  
xmlhttp.open("post", url, false);  
boundary="abcd"  
xmlhttp.setRequestHeader("Content-Type", "multipart/form-data, boundary="+boundary);
xmlhttp.setRequestHeader("Content-Length", stream.Size); 
xmlhttp.send(stream); 
}
function sendFileToServer(filePath){     
var filepath=encodeURI(encodeURI(filePath));    
var stream =new ActiveXObject("ADODB.Stream");     
stream.Type=1;     
stream.Open();     
stream.Position = 0;//指定或返加对像内数据的当前指针。
stream.LoadFromFile(filePath) //将FileName指定的文件装入对像中,参数FileName为指定的用户名
stream.Position = 0;
sendByteStreamToServer(stream,"<%=request.getContextPath() %>/upLoad.do?path="+filepath);//请求路径
stream.Close();
}
var countfiles=0;
var countfolders=0;
//用于打开浏览对话框选择路径
function BrowseFolder(){
try{   
var Message&