mint mvc文件上传功能——使用篇

为了不打击大家的积极性,暂时只着重讲用法,原理方面暂时不讲太多。

配置web.xml

文件上传需要用到servlet3的异步处理功能。需要在web.xml配置文件中加入异步支持声明(注释处):

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd"
         version="2.4">
         
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>mint.mvc.core.ServiceServlet</servlet-class>
        
        <!-- 开启servlet3.0的异步处理功能 -->
        <async-supported>true</async-supported>
        
        <init-param>
        <param-name>actionPackages</param-name>
            <param-value>demo;</param-value>
        </init-param>
        <load-on-startup>0</load-on-startup>
    </servlet>
	
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

编写上传文件的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()+"<br/>";
				} else {
					commonParam += (part.getName()+":"+part.getParameterValue())+"<br/>";
				}
			}
		}
		System.out.println(author);
		return fileParam+commonParam;
	}
}

处理文件上传请求的action方法需要添加MultipartConfig注解,MultipartConfig有三个参数:

  1. attributeName:为了在action内有办法获取到上传的文件,mint mvc把这些上传的文件都封装在一个数组里,这个数组用request对象的setAttribute方法,以指定的“attributeName”保存到request对象里。最后,可以在action内,用request.getAttribute()方法获得该数组。在mint mvc的参数博文中说过,mint mvc会自动的用HttpServletRequest的属性初始化action参数,所以只要在action上声明一个以attributeName命名,类型为MultipartParameter[]的参数,就可以轻松得到封装有文件信息的数组
  2. limitSize:限制每个上传文件(包括非文件参数)的大小,单位是B。如果上传过程中,发现有文件或参数超过此限制,上传过程将会终止
  3. tempFilePath:临时文件的保存路径。临时文件的命名格式是:UUID_真实文件名

mint mvc的上传功能除了可以接受文件外,还可以接收普通字段。普通字段会封装在request中,可以通过request的getParameters方法获取。

文件上传演示

文件上传的页面:

<!DOCTYPE html>
<meta charset="UTF-8">
<form action="upload" enctype="multipart/form-data" method="post" target="demo_iframe">
	价格:<input type="text" name="price" value="50"/><br/>
	作者:<input type="text" name="author" value="琼羽"/><br/>
	书籍:<input type="file" name="books"/><br/>
	书籍:<input type="file" name="books"/><br/>
	书籍:<input type="file" name="books"/><br/>
	<button type="submit">上传</button>
</form>

选择文件:

客户端返回结果:


上传成功的文件:

本demo下载地址:http://git.oschina.net/895925636/mintdemo/tree/master

项目地址:http://git.oschina.net/895925636/mint-mvc

收录地址:http://www.oschina.net/p/mint-mvc

博客地址:http://www.wemakers.net/home/blog?cate=1001

(完)

转载于:https://my.oschina.net/cnlw/blog/335187

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值