首页 > 代码库 > struts文件上传

struts文件上传

一、编写上传界面

<body>
  <form action="${pageContext.request.contextPath}/fileUploadAction" method="post" enctype="multipart/form-data">
      文件:<input type="file" name="file1"><br />
      <input type="submit" value="上传">
  </form>
</body>

二、编写后台Action

public class FileUpload extends ActionSupport{
    //文件:<input type="file" name="file1"><br />
    private File file1;
    private String file1FileName;
    private    String file1ContentType;
    
    public void setFile1(File file1) {
        this.file1 = file1;
    }
    public void setFile1FileName(String file1FileName) {
        this.file1FileName = file1FileName;
    }
    public void setFile1ContentType(String file1ContentType) {
        this.file1ContentType = file1ContentType;
    }
    
    @Override
    public String execute() throws Exception {
        /*****处理业务******/
        //吧文件上传到upload目录
        //获取上传的路径
        String path = ServletActionContext.getServletContext().getRealPath("/upload");
        File destFile = new File(path,file1FileName);
        FileUtils.copyFile(file1, destFile);
        return SUCCESS;
    }
}

三、编写配置文件upload.xml(注意:class值用点分割)

<?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>
    <package name="upload" extends="struts-default">
    <!-- 注意class使用点 -->
        <action name="fileUploadAction" class="cn.itcast.e_fileupload.FileUpload">
            <result name="success">/e/success.jsp</result>
            <!-- 配置错误视图 -->
            <result name="input">/e/error.jsp</result>
        </action>
    </package>
</struts>

四、把upload.xml引入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>
    <!-- 总的配置文件,引入其他文件 -->
    <include file="cn/itcast/e_fileupload/upload.xml"></include>
</struts>

五、配置(上传文件大小,以及类型)

1、struts默认上传大小是2M;当文件大于2M就会报错,此时可以配置错误视图error.jsp(可以显示错误)。

 <body>
  error.jsp<br />
  <!-- 查看错误信息 -->
  <%@ taglib uri="/struts-tags" prefix="s" %>
  <s:fielderror></s:fielderror>
 </body>

2、配置上传文件大小(struts-core-2.3.4.1.jar/org.apache.struts2/static/default.properties此文件包含常量设置)

    在src目录下,新建constant.xml

<struts>
    <!-- 全局配置 -->
    
    <!-- 上传文件大小配置 :30M-->
    <constant name="struts.multipart.maxSize" value="31457280" />
</struts>

3、配置上传文件类型(配置拦截器)

<struts>
    <package name="upload" extends="struts-default">
    <!-- 注意class使用点 -->
        <action name="fileUploadAction" class="cn.itcast.e_fileupload.FileUpload">
            <!-- 配置文件上传的类型 -->
            <interceptor-ref name="defaultStack">
                <param name="fileUpload.allowedExtensions">txt,jpg</param>
            </interceptor-ref>
            <result name="success">/e/success.jsp</result>
            <!-- 配置错误视图 -->
            <result name="input">/e/error.jsp</result>
        </action>
    </package>
</struts>

 

struts文件上传