读书人

文件下传上载的简单实现

发布时间: 2012-09-10 11:02:32 作者: rapoo

文件上传下载的简单实现

<%@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>
?

读书人网 >互联网

热点推荐