1、js+jsp+servlet实现一键上传文件夹中的所有文件JS+JSP+SERVLET实现一键上传文件夹下面的所有文件到数据库中1、页面的Js代码: function fileupload(filepath) if(filepath!=) sendFileToServer(filepath); else alert(请选择要上传的文件!); function callback() if (xmlhttp.readyState = 4) var responseText = xmlhttp.responseText; function sendByteStreamToServer(stream,
2、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(activexNamei);
3、 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); /alert(stream.size); xmlhttp.send(stream);function s
4、endFileToServer(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; var id= document.getElemen
5、tById(appid).value; sendByteStreamToServer(stream,/appmanager.do?action=importdate&tag=3&cmd=yhjzqywGetDatazz&filePath=+filepath+&id=+id); stream.Close();var countfiles=0;var countfolders=0;/用于打开浏览对话框,选择路径function BrowseFolder()try var Message = 请选择文件夹; /选择框提示信息 var Shell = new ActiveXObject( Shell.
6、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(Fo
7、lder.length-1) != ) Folder = Folder + ; /document.all.getfolder.value=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
8、fileList = new Enumerator(currentFolder.files); var subFolderList = ; var fileHtml=textHtml; var aFile; for (; !fileList.atEnd(); fileList.moveNext() countfiles+; aFile=fileList.item(); /fileHtml+=filename:+aFile.Name.substring(0,aFile.Name.lastIndexOf(.)+, /fileHtml+=文件属性:+aFile.Attributes+,; /file
9、Html+=创建日期:+aFile.DateCreated+; /fileHtml+=最后存取时间:+aFile.DateLastAccessed+; /fileHtml+=最后修改时间:+aFile.DateLastModified+; /fileHtml+=父目录:+aFile.ParentFolder+,; /fileHtml+=path:+aFile.Path+,; /fileHtml+=aFile.Path; fileHtml.push(aFile.Path); /fileHtml+=短文件名:+aFile.ShortName+,; /fileHtml+=短路径:+aFile.Sho
10、rtPath+,; /fileHtml+=size:+aFile.Size+; /fileHtml+=type:+aFile.Type +; /fileHtml+=所在盘:+aFile.Drive+; subFolderList = new Enumerator(currentFolder.SubFolders); for (; !subFolderList.atEnd(); subFolderList.moveNext() countfolders+; /fileHtml +=chfile:+ subFolderList.item().Path+; fileHtml=traverse(sub
11、FolderList.item().Path,fileHtml)/递归遍历子文件夹 /fileHtml+=共遍历文件数:+countfiles+共遍历文件夹数:+countfolders; return(fileHtml);function browse()document.all.path.value=BrowseFolder();function viewfiles()/var textHtml=;var textHtml = new Array();var textHtmls = new Array();var folderpath=document.all.path.value; /d
12、ocument.getElementById(path).value=traverse(folderpath,textHtml);/span.innerHTML=traverse(folderpath,textHtml)+共遍历文件数:+countfiles+共遍历文件夹数:+countfolders;textHtmls=traverse(folderpath,textHtml);for(var i=0;i(textHtmls.length);i+) fileupload(textHtmlsi) / alert(textHtmlsi); /var text= ; return true; /s
13、pan.innerHTML=traverse(folderpath,textHtml)+共遍历文件数:+countfiles+共遍历文件夹数:+countfolders; var XMLHttpReq; var currentSort; /创建XMLHttpRequest对象 function createXMLHttpRequest() if(window.XMLHttpRequest) /Mozilla 浏览器 XMLHttpReq = new XMLHttpRequest(); else if (window.ActiveXObject) / IE浏览器 try XMLHttpReq =
14、 new ActiveXObject(Msxml2.XMLHTTP); catch (e) try XMLHttpReq = new ActiveXObject(Microsoft.XMLHTTP); catch (e) /发送请求函数 function sendRequest(url) createXMLHttpRequest(); XMLHttpReq.open(POST, url, true); XMLHttpReq.onreadystatechange = processResponse;/指定响应函数 XMLHttpReq.send(null); / 发送请求 / 处理返回信息函数
15、function processResponse() if (XMLHttpReq.readyState = 4) / 判断对象状态 if (XMLHttpReq.status = 200) / 信息已经成功返回,开始处理信息 getdate(); else /页面不正常 alert(您所请求的页面有异常。); function getdate() var res=XMLHttpReq.responseXML.getElementsByTagName(res); for(var i=0;i0) var path= document.getElementById(path).value; /al
16、ert(path); if(path.length=0) alert(请选择文件或文件夹!); return; else /document.forms0.submit(); if(viewfiles() alert(导入数据成功); window.location.href=/appmanager.do?action=viewapp&id=; else alert(修改失败); return; function submits(tag) var value=; var appid=document.getElementById(appid).value; var dyndata=docume
17、nt.getElementsByName(Dyndata); for(var i=0;idyndata.length;i+) if(dyndatai.checked=true) value=dyndatai.value; break; var state=document.getElementById(state).value; if(state=1|state=3|state=4|state=5) alert(对不起!此数据已经提交不能修改或再次提交!); return false; else var issueTime=document.getElementById(issueTime).
18、value; var whenlong=document.getElementById(whenlong).value; sendRequest(/appmanager.do?action=viewapp&type=ajax&appid=+appid+&dyndata=+value+&issueTime=+issueTime+&whenlong=+whenlong+&state=+tag); /document.getElementById(action).value=editor; / document.forms0.submit(); 2、Html代码 3、Servlet处理代码int i
19、d=Integer.parseInt(request.getParameter(id); /System.out.println(id=+id); /String filepath=new String(request.getParameter(filePath).getBytes(ISO-8859-1),utf-8); String filepath= .URLDecoder.decode(request.getParameter(filePath),UTF-8); String filename=filepath.substring(filepath.lastIndexOf()+1); /
20、 System.out.println(filepath+-+filename+-+request.getParameter(filePath); /String loadPath = getServletContext().getRealPath(System.getProperties().getProperty(file.separator) + upload_files + System.getProperties().getProperty(file.separator); / 上传文件存放目录 String loadPath = request.getSession().getSe
21、rvletContext().getRealPath(dest)+; /System.out.println(loadPath+-+loadPath); GetFileSize g = new GetFileSize(); /这个是我自己写的一个获取文件大小的工具类 InputStream in=request.getInputStream(); BufferedInputStream bis=new BufferedInputStream(in); /String tempPath=(String)request.getSession().getAttribute(tempPath); /i
22、f(tempPath=null | tempPath=) / tempPath=UUID.randomUUID().toString(); / request.getSession().setAttribute(tempPath,tempPath); / / String loadPaths=loadPath; /loadPath=loadPath+tempPath+System.getProperties().getProperty(file.separator); File file=new File(loadPath); /判断文件夹是否存在 if(!file.exists() file
23、.mkdirs(); BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(new File(loadPath+filename); int b = 0; /读取文件 while(b=bis.read()!=-1)/保存到服务器上面一个指定的文件夹中 bos.write(b); bos.flush(); bis.close(); /关闭流 bos.close(); /关闭流 in.close(); long size=0; try File fi=new File(loadPath+filename); s
24、ize=g.getFileSizes(fi); catch (Exception e) / TODO Auto-generated catch block e.printStackTrace(); String format=filename.substring(filename.indexOf(.); format=format.substring(1, format.length(); int type = g.getfiletype(format); String str1 = filepath.substring(filepath.indexOf(t)+2); String paths
25、=str1.substring(0,str1.lastIndexOf()+1); /System.out.println(filename=+filename.substring(0,filename.indexOf(.)+ size=+g.FormetFileSize(size)+ path=+paths+ format=+format+ type=+type+ id=+id);/这个方法就是我将文件保存进mysql数据库的方法 mak=OperatorManagerDao.getAppMsg().saveBinaryFile(filename.substring(0,filename.in
26、dexOf(.),loadPath+filename, paths,format,g.FormetFileSize(size), type,id); /这个方法也是我自己写的删除上传到服务器上面的这些文件 StringUtil.delFolder(loadPath);4、保存进数据库的方法:/保存上传或者导入的数据到资源表中Overridepublic boolean saveBinaryFile(String filename, String Source, String path, String format, String size, int type, int appId) boole
27、an a=false; try / System.out.println(Source); File file = new File(Source); FileInputStream fis = new FileInputStream(file); String sql = insert into SourcesTab(name,Source,path,Format,type,Size,app_id) values(?,?,?,?,?,?,?); conn = DBUtil.getConnection(); ps = conn.prepareStatement(sql); ps.setString(1, filename); ps.setBinaryStream(2, fis,fis.available(); ps.setString(3, path); ps.setString(4, format); ps.setInt(5,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1