Struts2 文件上传

1.用的是这个拦截器

Struts2 文件上传

2.需要引入两个jar包

Struts2 文件上传

Struts2 文件上传

3.写个页面

Struts2 文件上传

4.最后效果,

Struts2 文件上传

5.这里需要写一个action 注意:这里的file和上边jsp中的name值是一致的

Struts2 文件上传

6.都提供get set方法

Struts2 文件上传

实例:

package com.hrxb.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.io.IOUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileUpAction extends ActionSupport {
    private File file;// 上传文件本身
    private String fileFileName;// 上传文件名字
    private String savePath;// 上传文件保存的路径
    // 执行上传文件的方法
    public String fileUpload() throws IOException {
        // 文件路径
        File f = new File(ServletActionContext.getServletContext().getRealPath(savePath));
        if (!f.exists()) {// 如果路径不存在就创建
            f.mkdirs();
        }
        // 创建输入流
        FileInputStream is = new FileInputStream(file);
        // 创建输出流
        FileOutputStream os = new FileOutputStream(f + "//" + fileFileName);
        // 写入磁盘
        IOUtils.copy(is, os);
        //
        os.flush();
        // 关闭流
        os.close();
        is.close();
        return SUCCESS;
    }

    public File getFile() {
        return file;
    }
    public void setFile(File file) {
        this.file = file;
    }

    public String getFileFileName() {
        return fileFileName;
    }

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

    public String getSavePath() {
        return savePath;
    }

    public void setSavePath(String savePath) {
        this.savePath = savePath;
    }

}


7.

Struts2 文件上传

8.

Struts2 文件上传

9.注意 上边的一定要和这里的name的值是相对应的

Struts2 文件上传

10.通过拦截器控制上传文件的类型。。。

这个拦截器的属性需要自己定义,不然它就默认定义

Struts2 文件上传

Struts2 文件上传

例子:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <!-- 模块 -->
    <package name="user" extends="struts-default">
        <!-- name:映射URL -->
        <action name="user_*" class="com.hrxb.action.UserAction"
            method="{1}">
            <!-- 返回结果 跳转页面 -->
            <result name="list">/WEB-INF/jsp/userList.jsp</result>
            <!-- 跳转到增加页面 -->
            <result name="toAdd">/WEB-INF/jsp/userAdd.jsp</result>
            <!--增加完成后跳转到查询Action -->
            <result name="addOK" type="redirectAction">user_findAll</result>
            <result name="toUpdate">/WEB-INF/jsp/userUpdate.jsp</result>
            <!-- 修改成功 -->
            <result name="updateOK" type="redirectAction">user_findAll</result>
            <!-- 删除 -->
            <result name="deleteOK" type="redirectAction">user_findAll</result>
        </action>
    </package>

    <!--文件上传模块 -->
    <constant name="struts.custom.i18n.resources" value="fileupMessage"></constant>
    <package name="fileUp" extends="struts-default">

        <action name="fileUpload" class="fileUpAction" method="fileUpload">
            <!--保存路径  -->
            <param name="savePath">/upload/</param>
            <!-- 使用文件上传拦截器 -->
            <interceptor-ref name="fileUpload">
                <!-- 允许上传文件的扩展名 -->
                <param name="allowedExtensions">jpg,jpeg,gif</param>
                <!-- 允许文件上传的大小 -->
                <param name="maximumSize">1024*1024*10</param>
            </interceptor-ref>
            
            <!-- 继续执行后续拦截器 -->
            <interceptor-ref name="defaultStack"></interceptor-ref>

            <!-- 文件上传成功 -->
            <result name="success">/WEB-INF/jsp/success.jsp</result>
            <!-- 文件上传失败 -->
            <result name="input">fileup.jsp</result>
        </action>

    </package>

</struts>


11.一发布就到这个路径下

Struts2 文件上传

12

Struts2 文件上传

错误是个数组


Struts2 文件上传


自定义上传失败的信息

Struts2 文件上传


Struts2 文件上传


Struts2 文件上传


Struts2 文件上传


Struts2 文件上传

从这里复制

Struts2 文件上传


Struts2 文件上传


Struts2 文件上传


Struts2 文件上传


Struts2 文件上传