- Revision
- 486
- Author
- mauro
- Date
- 2007-12-15 06:00:18 -0600 (Sat, 15 Dec 2007)
Log Message
Enhanced FileUploader to return form fields as FileItems.
Modified Paths
- trunk/examples/simple-example/src/main/java/org/codehaus/waffle/example/simple/UploadController.java
- trunk/examples/simple-example/src/main/webapp/upload.jspx
- trunk/waffle-core/src/main/java/org/codehaus/waffle/io/FileUploader.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/io/RequestFileUploader.java
Diff
Modified: trunk/examples/simple-example/src/main/java/org/codehaus/waffle/example/simple/UploadController.java (485 => 486)
--- trunk/examples/simple-example/src/main/java/org/codehaus/waffle/example/simple/UploadController.java 2007-12-15 11:32:26 UTC (rev 485) +++ trunk/examples/simple-example/src/main/java/org/codehaus/waffle/example/simple/UploadController.java 2007-12-15 12:00:18 UTC (rev 486) @@ -13,7 +13,7 @@ private FileUploader uploader; private Collection<String> errors; private List<FileItem> files; - private String comment; + private List<FileItem> formFields; public UploadController(FileUploader uploader) { this.uploader = uploader; @@ -23,6 +23,7 @@ @PRG(false) // PRG needs to be disabled to allow request-scope content to be accessible in referring view public void upload(){ files = uploader.getFiles(); + formFields = uploader.getFormFields(); errors = uploader.getErrors(); } @@ -33,13 +34,9 @@ public List<FileItem> getFiles() { return files; } - - public String getComment(){ - return comment; - } - public void setComment(String comment) { - this.comment = comment; + public List<FileItem> getFormFields() { + return formFields; } - + }
Modified: trunk/examples/simple-example/src/main/webapp/upload.jspx (485 => 486)
--- trunk/examples/simple-example/src/main/webapp/upload.jspx 2007-12-15 11:32:26 UTC (rev 485) +++ trunk/examples/simple-example/src/main/webapp/upload.jspx 2007-12-15 12:00:18 UTC (rev 486) @@ -24,6 +24,9 @@ <h3>Waffle file upload</h3> + <input type="text" name="comment" value=""/> - enter a comment + <br/> + <input type="file" name="importFile"/> <br/> @@ -31,13 +34,24 @@ <br/> <table> + <th colspan="2">Files uploaded</th> <c:forEach var="file" items="${files}" varStatus="status"> <tr class="${status.index % 2 eq 0 ? 'even' : 'odd'}"> - <td>${file.name}</td> + <td>${file.fieldName}(${file.name})</td> <td>${file.string}</td> </tr> </c:forEach> </table> + + <table> + <th colspan="2">Form fields</th> + <c:forEach var="field" items="${formFields}" varStatus="status"> + <tr class="${status.index % 2 eq 0 ? 'even' : 'odd'}"> + <td>${field.fieldName}</td> + <td>${field.string}</td> + </tr> + </c:forEach> + </table> </form> </body>
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/io/FileUploader.java (485 => 486)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/io/FileUploader.java 2007-12-15 11:32:26 UTC (rev 485) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/io/FileUploader.java 2007-12-15 12:00:18 UTC (rev 486) @@ -27,6 +27,13 @@ * @return A List of FileItems, one for each uploaded file */ List<FileItem> getFiles(); + + /** + * Returns the form fields + * + * @return A List of FileItems, one for each form field + */ + List<FileItem> getFormFields(); /** * Returns errors generated when parsing the multipart request.
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/io/RequestFileUploader.java (485 => 486)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/io/RequestFileUploader.java 2007-12-15 11:32:26 UTC (rev 485) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/io/RequestFileUploader.java 2007-12-15 12:00:18 UTC (rev 486) @@ -14,6 +14,7 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemFactory; @@ -38,10 +39,10 @@ * @author Mauro Talevi */ public class RequestFileUploader implements Startable, FileUploader { - private final HttpServletRequest request; + private final HttpServletRequestWrapper request; private final FileItemFactory itemFactory; - private Collection<String> errors = new ArrayList<String>(); - private List<FileItem> fileItems = new ArrayList<FileItem>(); + protected Collection<String> errors = new ArrayList<String>(); + protected List<FileItem> fileItems = new ArrayList<FileItem>(); /** * Creates RequestFileUploader @@ -50,7 +51,7 @@ * @param itemFactory the FileItemFactory */ public RequestFileUploader(HttpServletRequest request, FileItemFactory itemFactory) { - this.request = request; + this.request = new HttpServletRequestWrapper(request); this.itemFactory = itemFactory; } @@ -65,6 +66,17 @@ return files; } + public List<FileItem> getFormFields() { + List<FileItem> fields = new ArrayList<FileItem>(); + // only return form fields + for (FileItem file : fileItems) { + if ( file.isFormField() ){ + fields.add(file); + } + } + return fields; + } + public Collection<String> getErrors() { return errors; } @@ -77,7 +89,7 @@ * Upload files on request start */ public void start() { - uploadFiles(request, itemFactory); + uploadFileItems(request, itemFactory); } /** @@ -88,13 +100,14 @@ } /** - * Processes request to retrieve file uploads and records any errors. + * Parses a multipart request to upload file items and records any errors. + * Non-multipart requests are ignored. * * @param request the HttpServletRequest * @param itemFactory the FileItemFactory */ @SuppressWarnings("unchecked") - private void uploadFiles(HttpServletRequest request, FileItemFactory itemFactory) { + protected void uploadFileItems(HttpServletRequest request, FileItemFactory itemFactory) { if (ServletFileUpload.isMultipartContent(request)) { try { ServletFileUpload fileUpload = new ServletFileUpload(itemFactory); @@ -102,10 +115,9 @@ fileItems.clear(); fileItems.addAll(fileUpload.parseRequest(request)); } catch (FileUploadException e) { - errors.add("Failed to upload files: " + e.getMessage()); + errors.add("Failed to upload file items: " + e.getMessage()); } } } - }
To unsubscribe from this list please visit:
