KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > appfuse > webapp > action > FileUploadController


1 package org.appfuse.webapp.action;
2
3 import java.io.File JavaDoc;
4 import java.io.FileOutputStream JavaDoc;
5 import java.io.InputStream JavaDoc;
6 import java.io.OutputStream JavaDoc;
7
8 import javax.servlet.http.HttpServletRequest JavaDoc;
9 import javax.servlet.http.HttpServletResponse JavaDoc;
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 /**
18  * Controller class to upload Files.
19  *
20  * <p>
21  * <a HREF="FileUploadFormController.java.htm"><i>View Source</i></a>
22  * </p>
23  *
24  * @author <a HREF="mailto:matt@raibledesigns.com">Matt Raible</a>
25  */

26 public class FileUploadController extends BaseFormController {
27
28     public FileUploadController() {
29         setCommandName("fileUpload");
30         setCommandClass(FileUpload.class);
31     }
32     
33     public ModelAndView processFormSubmission(HttpServletRequest JavaDoc request,
34                                               HttpServletResponse JavaDoc response,
35                                               Object JavaDoc command,
36                                               BindException errors)
37     throws Exception JavaDoc {
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 JavaDoc request,
46                                  HttpServletResponse JavaDoc response, Object JavaDoc command,
47                                  BindException errors)
48     throws Exception JavaDoc {
49         FileUpload fileUpload = (FileUpload) command;
50
51         // validate a file was entered
52
if (fileUpload.getFile().length == 0) {
53             Object JavaDoc[] args =
54                 new Object JavaDoc[] { 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         // the directory to upload to
66
String JavaDoc uploadDir =
67             getServletContext().getRealPath("/resources") + "/" +
68             request.getRemoteUser() + "/";
69
70         // Create the directory if it doesn't exist
71
File JavaDoc dirPath = new File JavaDoc(uploadDir);
72
73         if (!dirPath.exists()) {
74             dirPath.mkdirs();
75         }
76
77         //retrieve the file data
78
InputStream JavaDoc stream = file.getInputStream();
79
80         //write the file to the file specified
81
OutputStream JavaDoc bos =
82             new FileOutputStream JavaDoc(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         //close the stream
93
stream.close();
94
95         // place the data into the request for retrieval on next page
96
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 JavaDoc 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