基于Spring MVC的Ajaxupload

   大部分类基于SpringSide的Struts版本,提供了SpringMVC的multipartResolver。multipartResolver的配置如下:
<bean id="multipartResolver"
		class="com.xxx.xxx.AjaxFileUploadMultipartResolver">
		<property name="maxUploadSize">
			<value>104857600</value>
		</property>
		<property name="maxInMemorySize">
			<value>4096</value>
		</property>
</bean>


AjaxFileUploadMultipartResolver的核心代码如下:
public class AjaxFileUploadMultipartResolver extends CommonsMultipartResolver {
	public AjaxFileUploadMultipartResolver() {
		super();
	}

	public AjaxFileUploadMultipartResolver(ServletContext servletContext) {
		this();
		setServletContext(servletContext);
	}

	public MultipartHttpServletRequest resolveMultipart(
			HttpServletRequest request) throws MultipartException {
		String encoding = determineEncoding(request);
		FileUpload fileUpload1 = prepareFileUpload(encoding); 

		// Begin of added code
		UploadListener listener = new UploadListener(request, 3);
		request.getSession().setAttribute("uploadInfo",
				new UploadInfo(0, request.getContentLength(), 0, 0, "start"));
		FileItemFactory factory = new MonitoredDiskFileItemFactory(listener);
		ServletFileUpload fileUpload = new ServletFileUpload(factory);
		fileUpload.setSizeMax(fileUpload1.getSizeMax());
		fileUpload.setHeaderEncoding(fileUpload1.getHeaderEncoding());
		// end of added code

		try {
			List fileItems = ((ServletFileUpload)fileUpload).parseRequest(request);
			MultipartParsingResult parsingResult = parseFileItems(fileItems, encoding);
			return new DefaultMultipartHttpServletRequest(
					request, parsingResult.getMultipartFiles(), parsingResult.getMultipartParameters());
		}
		catch (FileUploadBase.SizeLimitExceededException ex) {
			throw new MaxUploadSizeExceededException(fileUpload.getSizeMax(), ex);
		}
		catch (FileUploadException ex) {
			throw new MultipartException("Could not parse multipart servlet request", ex);
		}
	}

}

你可能感兴趣的:(spring,mvc,servlet,struts)