分享知识-快乐自己:Struts2文件上传及文件下载

1)Struts2单文件上传

action:类文件

package com.mlq.action;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import java.io.File;
import java.io.IOException;

/**
 * Struts2:单文件上传
 *
 * @author asus
 */
public class UploadFileAction extends ActionSupport {

    //临时文件
    private File upload;
    //文件类型(底层规定属性名称)
    private String uoloadContextType;
    //文件名称(底层规定属性名称)
    private String uploadFileName;
    //文件存放路径
    private String savePath;

    @Override
    public void validate() {
        System.out.println("严重方法");
    }

    //默认访问方法
    @Override
    public String execute() throws IOException {
        //文件全路径
        File destFile = new
                File(ServletActionContext.getRequest().getRealPath(savePath) + "\\" + getUploadFileName());
        String path = destFile.getPath();
        System.out.println(path + "------");
        FileUtils.copyFile(upload, destFile);
        return "success";
    }

    public String getSavePath() {
        return savePath;
    }
    public void setSavePath(String savePath) {
        this.savePath = savePath;
    }
    public File getUpload() {
        return upload;
    }
    public void setUpload(File upload) {
        this.upload = upload;
    }
    public String getUoloadContextType() {
        return uoloadContextType;
    }
    public void setUoloadContextType(String uoloadContextType) {
        this.uoloadContextType = uoloadContextType;
    }
    public String getUploadFileName() {
        return uploadFileName;
    }
    public void setUploadFileName(String uploadFileName) {
        this.uploadFileName = uploadFileName;
    }
}

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>
    <package name="user" namespace="/user" extends="struts-default">
        <!--全局配置信息-->
        <global-results>
            <result name="input">/upload.jsp</result>
        </global-results>
        <!--文件上传-->
        <action name="upload" class="com.mlq.action.UploadFileAction">
            <!--内置设定action类中的属性值-->
            <param name="savePath">/upload</param>
            <result>/upload.jsp</result>
            <!--设定文件参数-->
            <interceptor-ref name="fileUpload">
                <param name="maximumSize">512000</param>
                <param name="allowedType">image/jpg</param>
            </interceptor-ref>
            <!--默认的拦截器-->
            <interceptor-ref name="defaultStack"></interceptor-ref>
        </action>
    </package>
</struts>

upload.jsp:JSP页面

<%@ taglib prefix="s" uri="/struts-tags" %>
<%--
  Created by IntelliJ IDEA.
  User: asus
  Date: 2018/10/4
  Time: 10:32
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>StrutsTow文件上传</title>
</head>
<body>
<div>
    <fieldset>
        <legend>Struts2文件上传</legend>
        <form action="/user/upload" enctype="multipart/form-data" method="post">
            选择文件:<input type="file" name="upload">
            <input type="submit" value="提交">
        </form>
    </fieldset>
    <br/><br/>
    <fieldset>
        <legend>上传的图片回显</legend>
        <img width="200px" height="300px" src="/upload/<s:property value='uploadFileName'/>"/>
    </fieldset>
    <br/><br/>
    <fieldset>
        <legend>错误信息</legend>
        <s:fielderror></s:fielderror>
    </fieldset>
</div>
</body>
</html>

Web.xml:核心配置

    <!--核心控制器-->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <welcome-file-list>
        <welcome-file>upload.jsp</welcome-file>
    </welcome-file-list>

 

2)Struts2多文件上传

action:类文件

package com.mlq.action;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import java.io.File;
import java.io.IOException;

/**
 * Struts2:单文件上传
 *
 * @author asus
 */
public class UploadsFileAction extends ActionSupport {

    //临时文件
    private File[] upload;
    //文件类型
    private String[] uoloadContextType;
    //文件名称
    private String[] uploadFileName;
    //文件存放路径
    private String savePath;

    @Override
    public void validate() {
        System.out.println("严重方法");
    }

    //默认访问方法
    @Override
    public String execute() throws IOException {
        for (int i = 0; i < upload.length; i++) {
            File temp=upload[i];
            //文件全路径
            File destFile = new
                    File(ServletActionContext.getRequest().getRealPath(savePath) + "\\" + uploadFileName[i]);
            String path = destFile.getPath();
            System.out.println(path + "------");
            FileUtils.copyFile(temp, destFile);
        }
        return "success";
    }

    public File[] getUpload() {
        return upload;
    }

    public void setUpload(File[] upload) {
        this.upload = upload;
    }

    public String[] getUoloadContextType() {
        return uoloadContextType;
    }

    public void setUoloadContextType(String[] uoloadContextType) {
        this.uoloadContextType = uoloadContextType;
    }

    public String[] getUploadFileName() {
        return uploadFileName;
    }

    public void setUploadFileName(String[] uploadFileName) {
        this.uploadFileName = uploadFileName;
    }

    public String getSavePath() {
        return savePath;
    }

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

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.multipart.maxSize" value="5097152"/>
    <package name="user" namespace="/user" extends="struts-default">
        <!--全局配置信息-->
        <global-results>
            <result name="input">/upload.jsp</result>
        </global-results>
        <!--文件上传-->
        <action name="upload" class="com.mlq.action.UploadsFileAction">
            <!--内置设定action类中的属性值-->
            <param name="savePath">/upload</param>
            <result>/upload.jsp</result>
            <!--设定文件参数-->
            <interceptor-ref name="fileUpload">
                <param name="maximumSize">512000</param>
                <param name="allowedType">image/jpg</param>
            </interceptor-ref>
            <!--默认的拦截器-->
            <interceptor-ref name="defaultStack"></interceptor-ref>
        </action>
    </package>
</struts>

upload.jsp:JSP页面

<%@ taglib prefix="s" uri="/struts-tags" %>
<%--
  Created by IntelliJ IDEA.
  User: asus
  Date: 2018/10/4
  Time: 10:32
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>StrutsTow文件上传</title>
</head>
<body>
<div>

    <fieldset>
        <legend>Struts2文件上传</legend>
        <form action="/user/upload" enctype="multipart/form-data" method="post">
            选择文件:<input type="file" name="upload">
            <br/>
            选择文件:<input type="file" name="upload">
            <br/>
            选择文件:<input type="file" name="upload">
            <input type="submit" value="提交">
        </form>
    </fieldset>
    <br/><br/>
    <fieldset>
        <legend>上传的图片回显</legend>
        <s:iterator value="uploadFileName">
            <img width="200px" height="300px" src="/upload/<s:property/>"/>
        </s:iterator>
    </fieldset>
    <br/><br/>
    <fieldset>
        <legend>错误信息</legend>
        <s:fielderror></s:fielderror>
    </fieldset>

</div>
</body>
</html>

web.xml:核心配置

<!--核心控制器-->
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <welcome-file-list>
    <welcome-file>upload.jsp</welcome-file>
  </welcome-file-list>

3)Struts2文件下载

action:类文件

package com.mlq.action;

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

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

/**
 * Struts2:文件下载
 *
 * @author asus
 */
public class FileDownAction extends ActionSupport {

    /***
     * 读取下载文件的目录
     */
    private String inputPath;
    /***
     * 下载文件的文件名
     */
    private String fileName;
    /***
     * 读取下载文件的输入流
     */
    private InputStream inputStream;


    public String getInputPath() {
        return inputPath;
    }

    public void setInputPath(String inputPath) {
        this.inputPath = inputPath;
    }

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public InputStream getInputStream() throws FileNotFoundException {
        String realPath =
                ServletActionContext.getServletContext().getRealPath(inputPath);
        System.out.println(realPath+"\\"+fileName);
        return new BufferedInputStream(new FileInputStream(realPath+"\\"+fileName));
    }

    public void setInputStream(InputStream inputStream) {
        this.inputStream = inputStream;
    }
}

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>
    <package name="user" namespace="/user" extends="struts-default">
        <!--文件上传-->
        <action name="downLoad" class="com.mlq.action.FileDownAction">
            <!--指定文件下载目录地址-->
            <param name="inputPath">/upload</param>
            <!--设置下载类型-->
            <result name="success" type="stream">
                <!--设置发送到浏览器的MIMe类型-->
                <param name="contentType">application/octet-stream</param>
                <!--设置输入流的名称-->
                <param name="inputStream">inputStream</param>
                <!--提示用户打开还是下载-->
                <param name="contentDisposition">attachment;filename="${fileName}"</param>
                <!--缓冲区的大小:没有严格要求可随意设置-->
                <param name="bufferSize">4096</param>
            </result>
        </action>
    </package>
</struts>

 

index.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<%--
  Created by IntelliJ IDEA.
  User: asus
  Date: 2018/10/4
  Time: 10:32
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>StrutsTow文件下载</title>
</head>
<body>
<div>

    <fieldset>
        <legend>Struts2文件下载</legend>
        <a href="/user/downLoad?fileName=t01a4036c8714c169fd.jpg">文件下载</a>
    </fieldset>

</div>
</body>
</html>

web.xml核心配置

<!--核心控制器-->
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

单文件上传Demo:    多文件上传Demo:    文件下载Demo:

 

 

posted @ 2018-10-15 11:58  GDBD  阅读(185)  评论(0编辑  收藏  举报