| 1 20 package org.openi.web; 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.HttpServletRequest ; 30 import org.openi.application.Application; 31 32 33 41 public class UploadFile { 42 private static Logger logger = Logger.getLogger(UploadFile.class); 43 44 public UploadFile() { 45 } 46 47 53 public String uploadFile(HttpServletRequest request) 54 throws Exception { 55 logger.debug("begining file upload"); 56 57 List fileItems = null; 58 59 try { 60 DiskFileUpload fu = new DiskFileUpload(); 61 fu.setSizeMax(Application.getInstance().getMaxFileUploadSize()); 63 fu.setSizeThreshold(4096); 65 fu.setRepositoryPath(System.getProperty("java.io.tmpdir")); 67 68 fileItems = fu.parseRequest(request); 69 } catch (FileUploadException e) { 70 logger.error(e); 71 throw e; 72 } 73 74 FileItem uploadedFile = null; 76 String targetDirectory = null; 77 logger.debug("found " + fileItems.size() + " items in request"); 78 79 Iterator items = fileItems.iterator(); 80 81 while (items.hasNext()) { 82 FileItem fileItem = (FileItem) items.next(); 83 84 if ("uploadFile".equals(fileItem.getFieldName())) { 85 uploadedFile = fileItem; 86 } else if ("targetDirectory".equals(fileItem.getFieldName())) { 87 targetDirectory = fileItem.getString(); 88 } 89 } 90 String fileName = ""; 91 try { 92 fileName = parseFilename(uploadedFile.getName()); 93 logger.debug("fileName: " + fileName); 94 logger.debug("saving uploadFile to directory: " + targetDirectory); 95 logger.debug("size: " + uploadedFile.getSize()); 96 97 File newFile = new File (targetDirectory + "/" + fileName); 98 logger.info("saving file: " + newFile.getCanonicalPath()); 99 uploadedFile.write(newFile); 100 } catch (Exception e) { 101 logger.error(e); 103 throw e; 104 } 105 return targetDirectory + "/" + fileName; 106 } 107 108 112 private String parseFilename(String inputName) { 113 String cleanFilename = inputName; 114 int idx = cleanFilename.lastIndexOf('/'); 115 116 if ((idx >= 0) && (idx < cleanFilename.length())) { 117 cleanFilename = cleanFilename.substring(idx + 1); 118 } 119 120 idx = cleanFilename.lastIndexOf('\\'); 121 122 if ((idx >= 0) && (idx < cleanFilename.length())) { 123 cleanFilename = cleanFilename.substring(idx + 1); 124 } 125 126 return cleanFilename; 127 } 128 } 129 | Popular Tags |