NIHVIVO-160 Pass the FileUploadException through to the caller. The user particularly needs to see it if it is FileSizeExceeded or RequestSizeExceeded.
This commit is contained in:
parent
772de8c449
commit
0df8cdac42
3 changed files with 36 additions and 26 deletions
|
@ -19,6 +19,7 @@ import javax.servlet.http.HttpServletResponse;
|
|||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import org.apache.commons.fileupload.FileItem;
|
||||
import org.apache.commons.fileupload.FileUploadException;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
|
@ -114,8 +115,19 @@ public class N3MultiPartUpload extends VitroHttpServlet {
|
|||
throws ServletException, IOException {
|
||||
log.debug("N3MultiPartProcess 0.01");
|
||||
|
||||
FileUploadServletRequest request = FileUploadServletRequest
|
||||
FileUploadServletRequest request = null;
|
||||
try {
|
||||
request = FileUploadServletRequest
|
||||
.parseRequest(rawRequest, maxFileSize);
|
||||
} catch (FileUploadException e) {
|
||||
// TODO: forward to error message
|
||||
throw new ServletException("Size limit exceeded: " + e.getLocalizedMessage());
|
||||
}
|
||||
if (!request.isMultipart()) {
|
||||
// TODO: forward to error message
|
||||
throw new ServletException("Must POST a multipart encoded request");
|
||||
}
|
||||
|
||||
log.debug("multipart content detected: " + request.isMultipart());
|
||||
|
||||
ServletContext application = getServletContext();
|
||||
|
|
|
@ -18,6 +18,8 @@ import javax.servlet.http.HttpServletRequest;
|
|||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import org.apache.commons.fileupload.FileItem;
|
||||
import org.apache.commons.fileupload.FileUploadException;
|
||||
import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;
|
||||
import org.apache.commons.fileupload.servlet.ServletFileUpload;
|
||||
|
||||
/**
|
||||
|
@ -41,7 +43,8 @@ public abstract class FileUploadServletRequest implements HttpServletRequest {
|
|||
* Wrap this {@link HttpServletRequest} in an appropriate wrapper class.
|
||||
*/
|
||||
public static FileUploadServletRequest parseRequest(
|
||||
HttpServletRequest request, int maxFileSize) throws IOException {
|
||||
HttpServletRequest request, int maxFileSize) throws IOException,
|
||||
FileUploadException {
|
||||
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
|
||||
if (isMultipart) {
|
||||
return new MultipartHttpServletRequest(request, maxFileSize);
|
||||
|
|
|
@ -40,13 +40,12 @@ class MultipartHttpServletRequest extends FileUploadServletRequest {
|
|||
* and the uploaded files.
|
||||
*/
|
||||
public MultipartHttpServletRequest(HttpServletRequest request,
|
||||
int maxFileSize) throws IOException {
|
||||
int maxFileSize) throws IOException, FileUploadException {
|
||||
super(request);
|
||||
|
||||
Map<String, List<String>> parameters = new HashMap<String, List<String>>();
|
||||
Map<String, List<FileItem>> files = new HashMap<String, List<FileItem>>();
|
||||
|
||||
try {
|
||||
File tempDir = figureTemporaryDirectory(request);
|
||||
ServletFileUpload upload = createUploadHandler(maxFileSize, tempDir);
|
||||
|
||||
|
@ -56,19 +55,15 @@ class MultipartHttpServletRequest extends FileUploadServletRequest {
|
|||
if (item.isFormField()) {
|
||||
addToParameters(parameters, item.getFieldName(), item
|
||||
.getString("UTF-8"));
|
||||
LOG.debug("Form field (parameter) " + item.getFieldName()
|
||||
+ "=" + item.getString());
|
||||
LOG.debug("Form field (parameter) " + item.getFieldName() + "="
|
||||
+ item.getString());
|
||||
} else {
|
||||
addToFileItems(files, item);
|
||||
LOG.debug("File " + item.getFieldName() + ": "
|
||||
LOG
|
||||
.debug("File " + item.getFieldName() + ": "
|
||||
+ item.getName());
|
||||
}
|
||||
}
|
||||
} catch (FileUploadException e) {
|
||||
String message = "Failed to parse a multipart-content request.";
|
||||
LOG.error(message, e);
|
||||
throw new IOException(message, e);
|
||||
}
|
||||
|
||||
this.parameters = Collections.unmodifiableMap(parameters);
|
||||
LOG.debug("Parameters are: " + this.parameters);
|
||||
|
|
Loading…
Add table
Reference in a new issue