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下载下来:

  • 相关阅读:
    我的知识库(4) java获取页面编码(Z)
    知识库(3)JAVA 正则表达式 (超详细)
    The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts
    某人总结的《英语听力的技巧 》,挺搞的
    我的知识库(5)java单例模式详解
    构建可扩展程序
    SerialPort (RS232 Serial COM Port) in C# .NET
    Python学习笔记——String、Sequences
    UI题目我的答案
    jQuery学习系列学会操纵Form表单元素(1)
  • 原文地址:https://www.cnblogs.com/tenWood/p/7105706.html
Copyright © 2011-2022 走看看