为了不打击大家的积极性,暂时只着重讲用法,原理方面暂时不讲太多。
配置web.xml
文件上传需要用到servlet3的异步处理功能。需要在web.xml配置文件中加入异步支持声明(注释处):
dispatcher mint.mvc.core.ServiceServlet true actionPackages demo; 0 dispatcher /
编写上传文件的action
文件上传的action:
package demo;import mint.mvc.annotation.BaseMapping;import mint.mvc.annotation.Mapping;import mint.mvc.core.upload.MultipartConfig;import mint.mvc.core.upload.MultipartParameter;@BaseMapping("/upload")public class UploadAction { @MultipartConfig(attributeName = "params", limitSize = 1024*1024*1024, tempFilePath = "D:/upload") @Mapping(urls="/index", method="post") public String index(MultipartParameter[] params, String author){ String fileParam = ""; String commonParam = ""; if(params != null){ for(MultipartParameter part : params){ if(part.isFile()){ fileParam += part.getTempFile().getAbsolutePath()+""; } else { commonParam += (part.getName()+":"+part.getParameterValue())+""; } } } System.out.println(author); return fileParam+commonParam; }}
处理文件上传请求的action方法需要添加MultipartConfig注解,MultipartConfig有三个参数:
- attributeName:为了在action内有办法获取到上传的文件,mint mvc把这些上传的文件都封装在一个数组里,这个数组用request对象的setAttribute方法,以指定的“attributeName”保存到request对象里。最后,可以在action内,用request.getAttribute()方法获得该数组。在博文中说过,mint mvc会自动的用HttpServletRequest的属性初始化action参数,所以只要在action上声明一个以attributeName命名,类型为MultipartParameter[]的参数,就可以轻松得到封装有文件信息的数组
- limitSize:限制每个上传文件(包括非文件参数)的大小,单位是B。如果上传过程中,发现有文件或参数超过此限制,上传过程将会终止
- tempFilePath:临时文件的保存路径。临时文件的命名格式是:UUID_真实文件名
mint mvc的上传功能除了可以接受文件外,还可以接收普通字段。普通字段会封装在request中,可以通过request的getParameters方法获取。
文件上传演示
文件上传的页面:
选择文件:
客户端返回结果:
上传成功的文件:
本demo下载地址:
项目地址:
收录地址:
博客地址:
(完)