1 24 package org.riotfamily.forms.fileupload; 25 26 import javax.servlet.http.HttpServletRequest ; 27 28 import org.apache.commons.logging.Log; 29 import org.apache.commons.logging.LogFactory; 30 import org.springframework.web.multipart.MultipartException; 31 import org.springframework.web.multipart.MultipartHttpServletRequest; 32 import org.springframework.web.multipart.MultipartResolver; 33 34 41 public class FormsMultipartResolver implements MultipartResolver { 42 43 private static final String UPLOAD_ID_ATTR = 44 FormsMultipartResolver.class.getName() + ".uploadId"; 45 46 private Log log = LogFactory.getLog(FormsMultipartResolver.class); 47 48 private MultipartResolver resolver; 49 50 private String uploadIdParam = "uploadId"; 51 52 public FormsMultipartResolver(MultipartResolver resolver) { 53 this.resolver = resolver; 54 } 55 56 public boolean isMultipart(HttpServletRequest request) { 57 return resolver.isMultipart(request); 58 } 59 60 public MultipartHttpServletRequest resolveMultipart( 61 HttpServletRequest request) throws MultipartException { 62 63 String uploadId = request.getParameter(uploadIdParam); 64 if (uploadId == null) { 65 log.debug("Parameter '" + uploadIdParam + "' not set"); 66 return resolver.resolveMultipart(request); 67 } 68 log.debug("Upload: " + uploadId); 69 HttpUploadRequest uploadRequest = new HttpUploadRequest(request); 70 request.setAttribute(UPLOAD_ID_ATTR, uploadId); 71 UploadStatus.add(uploadId, uploadRequest); 72 return resolver.resolveMultipart(uploadRequest); 73 } 74 75 public void cleanupMultipart(MultipartHttpServletRequest request) { 76 UploadStatus.clearStatus(request.getAttribute(UPLOAD_ID_ATTR)); 77 resolver.cleanupMultipart(request); 78 } 79 80 } 81 | Popular Tags |