diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/filestorage/uploadrequest/FileUploadServletRequest.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/filestorage/uploadrequest/FileUploadServletRequest.java index 97de7b787..2e3be3253 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/filestorage/uploadrequest/FileUploadServletRequest.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/filestorage/uploadrequest/FileUploadServletRequest.java @@ -27,6 +27,14 @@ import org.apache.commons.fileupload.servlet.ServletFileUpload; * request parameters. *
*+ * The request will have an attribute named by {@link #FILE_ITEM_MAP}. Either + * this attribute or the call to {@link #getFiles()} will produce a map that may + * be empty but is never null. The keys to the map are the field names for the + * file fields. Since a form may have multiple fields with the same name, each + * field name maps to a list of items. If a user does not provide a file to be + * uploaded in a given field, the length of the file will be 0. + *
+ *
* Most methods are declared here, and simply delegate to the wrapped request.
* Methods that have to do with parameters or files are handled differently for
* simple requests and multipart request, and are implemented in the
@@ -35,6 +43,8 @@ import org.apache.commons.fileupload.servlet.ServletFileUpload;
*/
@SuppressWarnings("deprecation")
public abstract class FileUploadServletRequest implements HttpServletRequest {
+ public static final String FILE_ITEM_MAP = "file_item_map";
+
// ----------------------------------------------------------------------
// The factory method
// ----------------------------------------------------------------------
diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/filestorage/uploadrequest/MultipartHttpServletRequest.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/filestorage/uploadrequest/MultipartHttpServletRequest.java
index 217a43a5c..2fbe92f1f 100644
--- a/webapp/src/edu/cornell/mannlib/vitro/webapp/filestorage/uploadrequest/MultipartHttpServletRequest.java
+++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/filestorage/uploadrequest/MultipartHttpServletRequest.java
@@ -69,6 +69,7 @@ class MultipartHttpServletRequest extends FileUploadServletRequest {
LOG.debug("Parameters are: " + this.parameters);
this.files = Collections.unmodifiableMap(files);
LOG.debug("Files are: " + this.files);
+ request.setAttribute(FILE_ITEM_MAP, this.files);
}
/**
diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/filestorage/uploadrequest/SimpleHttpServletRequestWrapper.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/filestorage/uploadrequest/SimpleHttpServletRequestWrapper.java
index 48fb249ed..11f90360d 100644
--- a/webapp/src/edu/cornell/mannlib/vitro/webapp/filestorage/uploadrequest/SimpleHttpServletRequestWrapper.java
+++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/filestorage/uploadrequest/SimpleHttpServletRequestWrapper.java
@@ -20,6 +20,7 @@ class SimpleHttpServletRequestWrapper extends FileUploadServletRequest {
SimpleHttpServletRequestWrapper(HttpServletRequest request) {
super(request);
+ request.setAttribute(FILE_ITEM_MAP, Collections.EMPTY_MAP);
}
// ----------------------------------------------------------------------
@@ -35,7 +36,7 @@ class SimpleHttpServletRequestWrapper extends FileUploadServletRequest {
public Map