您的位置:首页 > 其它

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

2014-10-19 22:32 316 查看
为了不打击大家的积极性,暂时只着重讲用法,原理方面暂时不讲太多。


配置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有三个参数:


attributeName:为了在action内有办法获取到上传的文件,mint mvc把这些上传的文件都封装在一个数组里,这个数组用request对象的setAttribute方法,以指定的“attributeName”保存到request对象里。最后,可以在action内,用request.getAttribute()方法获得该数组。在mint mvc的参数博文中说过,mint mvc会自动的用HttpServletRequest的属性初始化action参数,所以只要在action上声明一个以attributeName命名,类型为MultipartParameter[]的参数,就可以轻松得到封装有文件信息的数组

limitSize:限制每个上传文件(包括非文件参数)的大小,单位是B。如果上传过程中,发现有文件或参数超过此限制,上传过程将会终止

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



(完)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐