欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-02 17:10:47
...

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>