当前位置:我的异常网» Java Web开发 » jsp 实现本地文件夹目录遍历并上传此索引下的文件
jsp 实现本地文件夹目录遍历并上传此索引下的文件
www.myexceptions.net 网友分享于:2015-08-26 浏览:0次
jsp 实现本地文件夹目录遍历并上传此目录下的文件
希望用户能够通过自己的浏览器选择一个本地的文件夹目录,并将此目录下的所有文件上传到服务器中。如果是单个文件用file控件很好实现,如果需要遍历本地文件夹目录并上传该如何实现呢。
我在网上找到了一个相关的例子,是利用ActiveX来做的,但似乎不完全,后台java程序中继承的Action类没有交代。
这方面资料太少,急用,还望大神指点!
下面是找的这个例子:
pageEncoding="UTF-8"%>
html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
UpLoadfunction 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
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,"/upLoad.do?path="+filepath);//请求路径
stream.Close();
}
var countfiles=0;
var countfolders=0;
//用于打开浏览对话框选择路径
function BrowseFolder(){
try{
var Message = "请选择文件夹"; //选择框提示信息
var Shell = new ActiveXObject( "Shell.Application" );
var Folder = Shell.BrowseForFolder(0,Message,0x0040,0x11);//起始目录为我的电脑
//var Folder = Shell.BrowseForFolder(0,Message,0); //起始目录为桌面
if(Folder != null){
Folder = Folder.items(); // 返回 FolderItems 对象
Folder = Folder.item(); // 返回 Folderitem 对象
Folder = Folder.Path; // 返回路径
if(Folder.charAt(Folder.length-1) != "\\"){
Folder = Folder + "\\";
}
return Folder;
}else{
Folder="";
return Folder;
}
} catch(e){
alert(e.message+"11");
}
}
//用于遍历
function traverse(localPath,textHtml){
var fso = new ActiveXObject("Scripting.FileSystemObject");
var currentFolder = fso.GetFolder(localPath);
var fileList = new Enumerator(currentFolder.files);
var subFolderList = "";
var fileHtml=textHtml;
var aFile;
for (; !fileList.atEnd(); fileList.moveNext()) {
countfiles++;
aFile=fileList.item();
fileHtml.push(aFile.Path);
}
subFolderList = new Enumerator(currentFolder.SubFolders);
for (; !subFolderList.atEnd(); subFolderList.moveNext()) {
countfolders++;
fileHtml=traverse(subFolderList.item().Path,fileHtml)//递归遍历子文件夹
}
return(fileHtml);
}
function showDiv(){
document.getElementById('loadStyle').style.display='inline';
}
function browse(){
文章评论