<%@page language="java" pageEncoding="UTF-8"%> <%@page import="java.util.ArrayList"%> <%@page import="org.apache.commons.fileupload.DiskFileUpload"%> <%@page import="java.util.List"%> <%@page import="java.util.Iterator"%> <%@page import="org.apache.commons.fileupload.FileItem"%> <%@page import="java.io.InputStream"%> <%@page import="java.io.FileOutputStream"%> <%@page import="java.util.Calendar"%> <%@page import="java.util.Map"%> <%@page import="java.util.Hashtable"%> <%@page import="java.io.File"%> <%@page import="java.io.OutputStream"%> <%@page import="java.io.BufferedInputStream"%> <%@page import="java.io.FileInputStream"%> <%! public static String getFileName(){ Calendar cal = Calendar.getInstance(); return cal.getTimeInMillis()+""; } %> <% String dir = "upload"; Map<String,String> filemaps = (Map<String,String>)request.getSession().getServletContext().getAttribute("filemaps"); if(filemaps==null){ filemaps = new Hashtable<String,String>(); request.getSession().getServletContext().setAttribute("filemaps",filemaps); } //try{ if("up".equals(request.getParameter("action"))){ List<String> errfiles = new ArrayList<String>(); DiskFileUpload fileupload = new DiskFileUpload(); fileupload.setHeaderEncoding("GBK"); fileupload.setSizeMax(1500 * 1024); fileupload.setSizeThreshold(1500 * 1024); List fileItems = fileupload.parseRequest(request); Iterator iter = fileItems.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (!item.isFormField()) { String name =item.getName(); String savename = getFileName(); int indx = name.lastIndexOf("."); String suffix = name.substring(indx);//从n开始到结束,即取出后缀名 filemaps.put(savename+suffix,new String(name.getBytes("gbk"),"utf-8")); InputStream istream = item.getInputStream(); String path = request.getSession().getServletContext().getRealPath(dir); try{ File f = new File(path+"\\"+savename+suffix); f.createNewFile(); FileOutputStream fout = new FileOutputStream(path+savename+suffix); byte buffer[] = new byte[8192]; int count = 0; while ((count = istream.read(buffer)) > 0) { fout.write(buffer, 0, count); } fout.close(); item.delete(); System.out.println("***************"); }catch(Exception e){ e.printStackTrace(); errfiles.add(filemaps.get(savename)); filemaps.remove(savename); } request.setAttribute("errfiles",errfiles); } } } //}catch(Exception e){ // e.printStackTrace(); //} if("delete".equals(request.getParameter("action"))){ String filename = request.getParameter("filename"); String path = request.getSession().getServletContext().getRealPath(dir); File f = new File(path+"\\"+filename); f.delete(); System.out.println("_________:"+filemaps.size()); filemaps.remove(filename); System.out.println(filemaps); request.getSession().getServletContext().setAttribute("filemaps",filemaps); } if("load".equals(request.getParameter("action"))){ OutputStream os = null; InputStream istream = null; BufferedInputStream bis = null; String filename = request.getParameter("filename"); try { os = response.getOutputStream(); response.reset(); response.setHeader("Content-disposition", "attachment; filename=" + filename); response.setContentType("application/javascript"); String path = request.getSession().getServletContext().getRealPath(dir); istream = new FileInputStream(path+filename); bis = new BufferedInputStream(istream); byte data[] = new byte[1024]; int size = 0; size = bis.read(data); while(size!=-1){ os.write(data); size = bis.read(data); } }catch(Exception expt){ expt.printStackTrace(); }finally{ try { if (bis != null) { bis.close(); } if (istream != null) { istream.close(); } if (os != null) { os.close(); } } catch (Exception ex) { ex.printStackTrace(); } } } %> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=GBK"> <script language="javascript" type="text/javascript" > function deletefile(name){ window.location.href="upload.jsp?action=delete&filename="+name; } function downloadfile(name){ window.location.href="upload.jsp?action=load&filename="+name; } </script> <style type="text/css"> body{ font-size:13px; } table{ font-size:13px; } </style> </head> <body> <div> <div>上传文件:</div> <form method="post" enctype="multipart/form-data" action="upload.jsp?action=up"> <input type="file" name="file" /> <input type="submit" value="确认" /> </form> </div> <div> <div>文件详情:</div> <div> <table> <tbody> <% boolean flag = true; Map<String,String> files = (Map<String,String>)request.getSession().getServletContext().getAttribute("filemaps"); if(files!=null&&files.size()!=0){ flag=false; for(Map.Entry<String,String> m:files.entrySet()){ %> <tr><td><span name="<%=m.getKey()%>"><%=m.getValue() %></span></td><td><a href="javascript:downloadfile('<%=m.getKey()%>');" >下载</a> <a href="javascript:deletefile('<%=m.getKey()%>');" >删除</a></td></tr> <% } } List<String> errfiles = (List<String>)request.getAttribute("errfiles"); if(errfiles!=null&&errfiles.size()!=0){ flag=false; for(String m:errfiles){ %> <tr><td><span><%=m%></span></td><td><span style="font:red;" >上传失败</span></td></tr> <% } } if(flag){ %> <tr><td><span>还未上传任何文件!</span></td></tr> <% } %> </tbody> </table> </div> </div> </body> </html>