• 分享知识-快乐自己: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:

     

  • 相关阅读:
    依赖注入
    Java实现一个字符串的反转
    LRU缓存介绍与实现 (Java)
    Java中HashMap遍历的两种方法(转)
    java中判断字符串是否为只包含数字
    LeakCanary 的使用遇到的弯路
    转: BAT等研发团队的技术博客
    转: android 内存检测工具 LeakCanary 说明
    转:安桌开发开源库的推荐1
    转: 技术牛人博客
  • 原文地址:https://www.cnblogs.com/mlq2017/p/9790232.html
Copyright © 2020-2023  润新知