{转}struts里一次上传多个文件的方法。

UploadAction.java

package action;

import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.OutputStream;  
import java.util.List;  

import org.apache.struts2.ServletActionContext;  
import com.opensymphony.xwork2.ActionSupport;  

//文件上传Action  
public class UploadAction extends ActionSupport {  
    //上传文件存放路径  
    private final static String UPLOADDIR = "/upload";  
    //上传文件集合  
    private List<File> file;  
    //上传文件名集合  
    private List<String> fileFileName;  
    //上传文件内容类型集合  
    private List<String> fileContentType;  

    public List<File> getFile() {  
        return file;  
    }  

    public void setFile(List<File> file) {  
        this.file = file;  
    }  

    public List<String> getFileFileName() {  
        return fileFileName;  
    }  

    public void setFileFileName(List<String> fileFileName) {  
        this.fileFileName = fileFileName;  
    }  

    public List<String> getFileContentType() {  
        return fileContentType;  
    }  

    public void setFileContentType(List<String> fileContentType) {  
        this.fileContentType = fileContentType;  
    }  

    public String execute() throws Exception {  
        for (int i = 0; i < file.size(); i++) {  
            //循环上传每个文件  
            uploadFile(i);  
        }  
        return "success";  
    }  

    //执行上传功能  
    private void uploadFile(int i) throws FileNotFoundException, IOException {  
        try {  
            InputStream in = new FileInputStream(file.get(i));  
            String dir = ServletActionContext.getRequest().getRealPath(UPLOADDIR);  
            File uploadFile = new File(dir, this.getFileFileName().get(i));  
            OutputStream out = new FileOutputStream(uploadFile);  
            byte[] buffer = new byte[1024 * 1024];  
            int length;  
            while ((length = in.read(buffer)) > 0) {  
                out.write(buffer, 0, length);  
            }  

            in.close();  
            out.close();  
        } catch (FileNotFoundException ex) {  
            ex.printStackTrace();  
        } catch (IOException ex) {  
            ex.printStackTrace();  
        }  
    }  
}

===================================

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>  
    <!-- 系统常量定义,定义上传文件字符集编码 -->  
    <constant name="struts.i18n.encoding" value="utf-8"></constant>  
    <!-- 系统常量定义,定义上传文件临时存放路径 -->  
    <constant name="struts.multipart.saveDir" value="d:\"></constant>  
    <!-- Action所在包定义 -->  
    <package name="action" extends="struts-default">  
        <!-- Action名字,类以及导航页面定义 -->  
        <!-- 通过Action类处理才导航的的Action定义 -->  
        <action name="upload" class="action.UploadAction">  
            <result name="input">upload.jsp</result>  
            <result name="success">result.jsp</result>  
        </action>  
    </package>  
</struts>

====================================

jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="/struts-tags" prefix="s" %>  
<html>  
    <head>  
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
        <title>上传文件</title>  
    </head>  
    <body>  
    <!-- 上传文件表单定义 -->  
    <s:form action="upload" method="post" enctype="multipart/form-data">  
        <tr>  
    <!-- 上传文件标签定义 -->  
    <td>上传文件:<s:file name="file"></s:file></td>  
    </tr>  
    <tr>  
    <td>再次上传文件:<s:file name="file"></s:file></td>  
    </tr>  
    <tr>  
    <td align="left"><s:submit name="submit" value="提交"></s:submit></td>  
    </tr>  
    </s:form>  
    </body>  
</html>

jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="/struts-tags" prefix="s" %>  
<html>  
    <head>  
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
        <title>上传文件</title>  
    </head>  
    <body>  
    <!-- 上传文件表单定义 -->  
    <s:form action="upload" method="post" enctype="multipart/form-data">  
        <tr>  
    <!-- 上传文件标签定义 -->  
    <td>上传文件:<s:file name="file"></s:file></td>  
    </tr>  
    <tr>  
    <td>再次上传文件:<s:file name="file"></s:file></td>  
    </tr>  
    <tr>  
    <td align="left"><s:submit name="submit" value="提交"></s:submit></td>  
    </tr>  
    </s:form>  
    </body>  
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值