1 package org.appfuse.webapp.action; 2 3 import java.io.File ; 4 import java.io.FileOutputStream ; 5 import java.io.InputStream ; 6 import java.io.OutputStream ; 7 8 import javax.servlet.http.HttpServletRequest ; 9 import javax.servlet.http.HttpServletResponse ; 10 11 import org.appfuse.Constants; 12 import org.springframework.validation.BindException; 13 import org.springframework.web.multipart.MultipartHttpServletRequest; 14 import org.springframework.web.multipart.commons.CommonsMultipartFile; 15 import org.springframework.web.servlet.ModelAndView; 16 17 26 public class FileUploadController extends BaseFormController { 27 28 public FileUploadController() { 29 setCommandName("fileUpload"); 30 setCommandClass(FileUpload.class); 31 } 32 33 public ModelAndView processFormSubmission(HttpServletRequest request, 34 HttpServletResponse response, 35 Object command, 36 BindException errors) 37 throws Exception { 38 if (request.getParameter("cancel") != null) { 39 return new ModelAndView(getCancelView()); 40 } 41 42 return super.processFormSubmission(request, response, command, errors); 43 } 44 45 public ModelAndView onSubmit(HttpServletRequest request, 46 HttpServletResponse response, Object command, 47 BindException errors) 48 throws Exception { 49 FileUpload fileUpload = (FileUpload) command; 50 51 if (fileUpload.getFile().length == 0) { 53 Object [] args = 54 new Object [] { getText("uploadForm.file", request.getLocale()) }; 55 errors.rejectValue("file", "errors.required", args, "File"); 56 57 return showForm(request, response, errors); 58 } 59 60 MultipartHttpServletRequest multipartRequest = 61 (MultipartHttpServletRequest) request; 62 CommonsMultipartFile file = 63 (CommonsMultipartFile) multipartRequest.getFile("file"); 64 65 String uploadDir = 67 getServletContext().getRealPath("/resources") + "/" + 68 request.getRemoteUser() + "/"; 69 70 File dirPath = new File (uploadDir); 72 73 if (!dirPath.exists()) { 74 dirPath.mkdirs(); 75 } 76 77 InputStream stream = file.getInputStream(); 79 80 OutputStream bos = 82 new FileOutputStream (uploadDir + file.getOriginalFilename()); 83 int bytesRead = 0; 84 byte[] buffer = new byte[8192]; 85 86 while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) { 87 bos.write(buffer, 0, bytesRead); 88 } 89 90 bos.close(); 91 92 stream.close(); 94 95 request.setAttribute("friendlyName", fileUpload.getName()); 97 request.setAttribute("fileName", file.getOriginalFilename()); 98 request.setAttribute("contentType", file.getContentType()); 99 request.setAttribute("size", file.getSize() + " bytes"); 100 request.setAttribute("location", 101 dirPath.getAbsolutePath() + Constants.FILE_SEP + 102 file.getOriginalFilename()); 103 104 String link = 105 request.getContextPath() + "/resources" + "/" + 106 request.getRemoteUser() + "/"; 107 108 request.setAttribute("link", link + file.getOriginalFilename()); 109 110 return new ModelAndView(getSuccessView()); 111 } 112 } 113 | Popular Tags |