1 20 package org.openi.project; 21 22 import org.apache.commons.fileupload.DiskFileUpload; 23 import org.apache.commons.fileupload.FileItem; 24 import org.apache.commons.fileupload.FileUploadException; 25 import org.apache.log4j.Logger; 26 import java.io.File ; 27 import java.util.Iterator ; 28 import java.util.List ; 29 import javax.servlet.http.HttpServlet ; 30 import javax.servlet.http.HttpServletRequest ; 31 import javax.servlet.http.HttpServletResponse ; 32 33 34 40 public class FileUploadServlet extends HttpServlet { 41 private static Logger logger = Logger.getLogger(FileUploadServlet.class); 42 43 46 public void service(HttpServletRequest request, HttpServletResponse response) { 47 logger.debug("beging file upload servlet"); 48 49 List fileItems = null; 50 51 try { 52 DiskFileUpload fu = new DiskFileUpload(); 53 fu.setSizeMax(1000000); 55 fu.setSizeThreshold(4096); 57 fu.setRepositoryPath(System.getProperty("java.io.tmpdir")); 59 60 fileItems = fu.parseRequest(request); 61 } catch (FileUploadException e) { 62 logger.error(e); 63 } 64 65 FileItem uploadedFile = null; 67 String targetDirectory = null; 68 logger.debug("found " + fileItems.size() + " items in request"); 69 70 Iterator items = fileItems.iterator(); 71 72 while (items.hasNext()) { 73 FileItem fileItem = (FileItem) items.next(); 74 75 if ("uploadFile".equals(fileItem.getFieldName())) { 76 uploadedFile = fileItem; 77 } else if ("targetDirectory".equals(fileItem.getFieldName())) { 78 targetDirectory = fileItem.getString(); 79 } 80 } 81 82 try { 83 String fileName = parseFilename(uploadedFile.getName()); 84 logger.debug("fileName: " + fileName); 85 logger.debug("saving uploadFile to directory: " + targetDirectory); 86 logger.debug("size: " + uploadedFile.getSize()); 87 88 File newFile = new File (targetDirectory + "/" + fileName); 89 logger.info("saving file: " + newFile.getCanonicalPath()); 90 uploadedFile.write(newFile); 91 } catch (Exception e) { 92 logger.error(e); 94 } 95 96 try { 97 response.sendRedirect("splash.jsp"); 98 } catch (java.io.IOException e) { 99 logger.error(e); 100 } 101 } 102 103 107 private String parseFilename(String inputName) { 108 String cleanFilename = inputName; 109 int idx = cleanFilename.lastIndexOf('/'); 110 111 if ((idx >= 0) && (idx < cleanFilename.length())) { 112 cleanFilename = cleanFilename.substring(idx + 1); 113 } 114 115 idx = cleanFilename.lastIndexOf('\\'); 116 117 if ((idx >= 0) && (idx < cleanFilename.length())) { 118 cleanFilename = cleanFilename.substring(idx + 1); 119 } 120 121 return cleanFilename; 122 } 123 } 124 | Popular Tags |