Struts2的多个文件上传和下载

1、新建一个web工程,导入struts2上传文件所需jar包;


2、在web.xml文件中配置拦截器和欢迎页面;web.xml文件内容如下:



  Struts2_Action
  
 
    struts2
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
 

 
    struts2
    /*
 

  
 
    index.html
    upload.jsp
 

  


3、上传文件的页面upload.jsp文件,内容如下:



4、uploadAction类的定义:

package com.my.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class uploadAction extends ActionSupport
{
    @Override
    public String execute() throws Exception
    {   
        String path = this.getSavePath();   //保存的路径
        for(int i = 0; i < upload.length; i++)
        {        
            String fileName = this.getUploadFileName()[i]; //上传的文件名
            System.out.println("upload:"+this.getUpload());
            System.out.println("uploadContentType:"+uploadContentType);
            System.out.println("path:"+path);
            System.out.println("fileName:"+fileName);
            FileInputStream in = new FileInputStream(this.getUpload()[i]);
            FileOutputStream out = new FileOutputStream(path+"\\"+fileName);
            byte[] b = new byte[in.available()];
            
            in.read(b);
            out.write(b);
            
            in.close();
            out.close();
        }
        return SUCCESS;
    }
    
    private File[] upload;  //上传的文件域中的路径,和表单中的file中的name名一样
    private String[] uploadContentType; //上传文件的类型
    private String[] uploadFileName;    //上传的文件名称
    
    private String savePath;   //文件保存的路径

    public String getSavePath()
    {
        savePath = ServletActionContext.getServletContext().getRealPath("//upload");
        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[] getUploadContentType()
    {
        return uploadContentType;
    }

    public void setUploadContentType(String[] uploadContentType)
    {
        this.uploadContentType = uploadContentType;
    }

    public String[] getUploadFileName()
    {
        return uploadFileName;
    }

    public void setUploadFileName(String[] uploadFileName)
    {
        this.uploadFileName = uploadFileName;
    }
    
}


【注意】action中的属性名的命名方式,必须要保持一致:如下

 private File[] upload;  

    private String[] uploadContentType; 

     private String[] uploadFileName;   

红色字体的部分内容是可变的,但是3个要全部一样,并且还必须要和提交的表单中的file域的name名一样;


5、action的配置,在struts.xml中配置:

配置一个action的参数,来指定savePath的路径;



---------------

success,jsp的内容:




Insert title here


SUCCESS;


你可能感兴趣的:(Struts2)