• Struts文件上传与下载详解 _上传多个文件



         在上一篇中给大家列出的单个文件的上传,那么这一篇咱们讲讲上传多个文件改怎么作呢?由于过程和上传单个文件的类似,所以在这里不细说,相信大家都能看懂,看不懂的可以在评论区留言,我看到之后会及时回复的!!

        咱们开门见山的来吧

    1.创建个jsp表单页面,主要就是上传多个文件:


      <body>
       
        
        <s:form action="upload.action" method="post" enctype="multipart/form-data">
        	<s:textfield name="file" label="标题"/><br/>
        	<%-- <s:file name="upload" label="选择文件"/><br/> --%>
        	<s:file name="mupload" label="选择文件1"/><br/>
        	<s:file name="mupload" label="选择文件2"/><br/>
        	<s:file name="mupload" label="选择文件3"/><br/>
        	<s:submit name="submit" value="上传文件"/>
        </s:form>
      </body>

    2.我们接下来去写一下UploadAction里面:

    package org.web;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import org.apache.struts2.ServletActionContext;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class UploadAction extends ActionSupport {
    	
    	
    	private File[] mupload;                       //封装上传文件的属性(多个)
    	private String[] muploadContentType;          //封装上传文件的类型(多个)
    	private String[] muploadFileName;             //封装上传文件的名称(多个)
    	private String msavePath;                     //获取文件上传的路径(多个)
    
    	
    	
    	//实现文件的多个上传
    	public String execute() throws IOException{
    		byte[] buffer=new byte[1024];
    		for (int i = 0; i < mupload.length; i++) {
    			//获取物理路径"/upload"
    			String path=ServletActionContext.getServletContext().getRealPath(savePath);
    			FileInputStream fis=new FileInputStream(getMupload()[i]);
    			FileOutputStream fos=new FileOutputStream(path+"/"+getMuploadFileName()[i]);
    			int length=fis.read(buffer);
    			while (length>0) {
    				//每次写入length长度的内容
    				fos.write(buffer,0,length);
    				length=fis.read(buffer);
    			}
    			fis.close();
    			fos.flush();
    			fos.close();
    		}
    		return SUCCESS;
    	}
    	
    	
    	
    	public File[] getMupload() {
    		return mupload;
    	}
    	public void setMupload(File[] mupload) {
    		this.mupload = mupload;
    	}
    	public String[] getMuploadContentType() {
    		return muploadContentType;
    	}
    	public void setMuploadContentType(String[] muploadContentType) {
    		this.muploadContentType = muploadContentType;
    	}
    	public String[] getMuploadFileName() {
    		return muploadFileName;
    	}
    	public void setMuploadFileName(String[] muploadFileName) {
    		this.muploadFileName = muploadFileName;
    	}
    	public String getMsavePath() {
    		return msavePath;
    	}
    	public void setMsavePath(String msavePath) {
    		this.msavePath = msavePath;
    	}
    	
    	
    }
    

    3.nice,这里面已经搞定,咱们就移步到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="default" namespace="/" extends="struts-default">
    		
    		
    		<!-- 文件上传 -->
    		<action name="upload" class="org.web.UploadAction">
    			<param name="savePath">/upload</param>
    			<result name="success">/upload_suc.jsp</result>
    		</action>
    		
    		
    	</package>
    </struts>
        最后发布运行就OK了。

  • 相关阅读:
    pg-xl 基于 pgxc_ctl 安装与使用
    pg-xl 的基本方式添加节点
    pg-xl 的基本方式安装与使用
    oracle 12.2.0.1 + oracle goldengate 12.3.0.1.4 之一 dml
    postgresql 高可用 etcd + patroni 之二 patroni
    postgresql 高可用 etcd + patroni 之一 etcd
    rvm,ruby的安装
    oracle 12.2.0.1 使用 active dataguard broker 之二 failover
    oracle 12.2.0.1 使用 active dataguard broker 之二 switchover
    es 6.3 .tar.gz 安装
  • 原文地址:https://www.cnblogs.com/a1111/p/12816304.html
Copyright © 2020-2023  润新知