zoukankan      html  css  js  c++  java
  • 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了。

  • 相关阅读:
    swift 第十四课 可视化view: @IBDesignable 、@IBInspectable
    swift 第十三课 GCD 的介绍和使用
    swift 第十二课 as 的使用方法
    swift 第十一课 结构体定义model类
    swift 第十课 cocopod 网络请求 Alamofire
    swift 第九课 用tableview 做一个下拉菜单Menu
    swift 第八课 CollectView的 添加 footerView 、headerView
    swift 第七课 xib 约束的优先级
    swift 第六课 scrollview xib 的使用
    swift 第五课 定义model类 和 导航栏隐藏返回标题
  • 原文地址:https://www.cnblogs.com/a1111/p/7459745.html
Copyright © 2011-2022 走看看