zoukankan      html  css  js  c++  java
  • struts2学习(14)struts2文件上传和下载(4)多个文件上传和下载

    四、多个文件上传:

    五、struts2文件下载:

    多个文件上传action

    com.cy.action.FilesUploadAction.java:

    package com.cy.action;
    
    import java.io.File;
    
    import org.apache.commons.io.FileUtils;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class FilesUploadAction extends ActionSupport{
        private static final long serialVersionUID = 1L;
        
        private File[] struts;                    //文件,对应fileupload.jsp中input type=file的name
        private String[] strutsFileName;        //文件名
        private String[] strutsContentType;        //文件类型
        
        public File[] getStruts() {
            return struts;
        }
    
        public void setStruts(File[] struts) {
            this.struts = struts;
        }
    
        public String[] getStrutsFileName() {
            return strutsFileName;
        }
    
        public void setStrutsFileName(String[] strutsFileName) {
            this.strutsFileName = strutsFileName;
        }
    
        public String[] getStrutsContentType() {
            return strutsContentType;
        }
    
        public void setStrutsContentType(String[] strutsContentType) {
            this.strutsContentType = strutsContentType;
        }
    
        @Override
        public String execute() throws Exception {
            for(int i=0; i<struts.length; i++){
                System.out.println("文件名:" + strutsFileName[i]);
                System.out.println("文件类型:" + strutsContentType[i]);
                String filePath = "E:/" + strutsFileName[i];
                File savefile = new File(filePath);
                FileUtils.copyFile(struts[i], savefile);
            }
            return SUCCESS;
        }
        
        
    }
    View Code

    文件下载action

    FileDownloadAction.java:

    package com.cy.action;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class FileDownloadAction extends ActionSupport{
    
        private static final long serialVersionUID = 1L;
        private String fileName;        //下载的文件名
        
        public String getFileName() throws Exception {
            fileName=new String(fileName.getBytes(),"ISO8859-1");    //对文件中文名进行重编码
            return fileName;
        }
        public void setFileName(String fileName){
            this.fileName = fileName;
        }
        
        /**
         * 返回的是文件流
         * @return
         * @throws Exception
         */
        public InputStream getInputStream() throws Exception{
            File file = new File("E:/1.jpg");    //将E盘下的1.png下载下来
            this.fileName = "美女哇哇.png";        //重新定义文件名
            return new FileInputStream(file);    //返回inputStream
        }
    }
    View Code

    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>
        
        <!-- 配置允许上传文件最大为20000000Byte,约20Mb -->
        <constant name="struts.multipart.maxSize" value="20000000"></constant>
        
        <package name="manage" extends="struts-default">
            <action name="upload" class="com.cy.action.FileUploadAction">
                <result name="input">fileupload.jsp</result>
                <result name="success">success.jsp</result>
                
                <!-- 配置允许上传的文件类型
                      配置允许上传的文件大小,最大81101byte,= 79.2KB
                 -->
                <interceptor-ref name="fileUpload">
                    <param name="allowedTypes">image/bmp,image/x-png,image/gif,image/jpg,image/jpeg</param>
                    <param name="maximumSize">81101</param>
                </interceptor-ref>
                
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </action>
            
            <action name="uploads" class="com.cy.action.FilesUploadAction">
                <result name="input">filesupload.jsp</result>
                <result name="success">success.jsp</result>
            </action>
            
            <action name="download" class="com.cy.action.FileDownloadAction">
                <result type="stream">
                    <param name="contentDisposition">attachment;filename=${fileName}</param>
                </result>
            </action>
        </package>
        
    </struts>

    多个文件上传filesupload.jsp:

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@taglib prefix="s" uri="/struts-tags" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <form action="uploads" method="post" enctype="multipart/form-data">
            选择文件1:<input type="file" name="struts" /><br/>
            选择文件2:<input type="file" name="struts" /><br/>
            选择文件3:<input type="file" name="struts" /><br/>
            <input type="submit" value="提交" />
        </form>
    </body>
    </html>

    文件上传成功success.jsp:

    <body>
    文件上传成功!
    </body>
    View Code

    文件下载filedownload.jsp:

    <body>
        <a href="download">文件下载</a>
    </body>

    测试结果:

    1.多个文件上传:

    选择文件上传,成功后console打印:

    2.文件下载,将E盘下的1.jpg下载下来:

  • 相关阅读:
    linux | 管道符、输出重定向
    php 升级php5.5 、php7
    mysql 启动失败
    centos7.2安装phpmyadmin
    php file_get_contents失败[function.file-get-contents]: failed to open stream: HTTP request failed!解决
    go println与printf区别
    前端 head 中mate 详解
    centos 7 安装mysql
    iOS数据持久化—数据库SQLite模糊查询
    C 语言字符串和格式化输入与输出
  • 原文地址:https://www.cnblogs.com/tenWood/p/7105706.html
Copyright © 2011-2022 走看看