大部分类基于SpringSide的Struts版本,提供了SpringMVC的multipartResolver。multipartResolver的配置如下:
[code]
<bean id="multipartResolver"
class="com.xxx.xxx.AjaxFileUploadMultipartResolver">
<property name="maxUploadSize">
<value>104857600</value>
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean>
[/code]
AjaxFileUploadMultipartResolver的核心代码如下:
[code]
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);
}
}
}
[/code]
[code]
<bean id="multipartResolver"
class="com.xxx.xxx.AjaxFileUploadMultipartResolver">
<property name="maxUploadSize">
<value>104857600</value>
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean>
[/code]
AjaxFileUploadMultipartResolver的核心代码如下:
[code]
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);
}
}
}
[/code]