struts2开发8--批量上传文件

很多应用都要求一个界面同时上传多个文件,在struts2框架也可以很方便的支持多文件同时上传,下面介绍一种使用数组实现多文件上传的方法。

第一步:在项目中创建FileUpArrayAction类,来处理多个文件同时上传,其代码如下:

package cn.test.fileUp;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class FileUpArrayAction extends ActionSupport {
 private File[] upload;
 private String[] uploadContentType;
 private String[] uploadFileName;
 private String savePath;
 private Date upTime;
// public Date getCreateTime()
// {
//  upTime=new Date();
//  return upTime;
// }
 private static void upLoad(File source,File target) throws IOException
 {
  InputStream inputStream=null;
  OutputStream outPutStream=null;
  try {
   inputStream=new BufferedInputStream(new FileInputStream(source));
   outPutStream=new BufferedOutputStream(new FileOutputStream(target));
   byte[] buffer=new byte[1024];
   int length=0;
   while((length=inputStream.read(buffer))>0)
   {
    outPutStream.write(buffer, 0, length);
   }
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  finally
  {
   if (null!=inputStream)
   {
    inputStream.close();
   }
   if(null!=outPutStream) 
   {
    outPutStream.close();
   }
  }
  
 }
 public String ArrayfileUpUI()
 {
  return "ArrayfileUpUI";
 }
 public String execute() throws IOException
 {
  for(int i=0;i<upload.length;i++)
  {
   String path1=ServletActionContext.getServletContext().getRealPath(savePath);
   File f=new File(path1);
   if(!f.exists())
   {
    f.mkdirs();
   }
   String path=ServletActionContext.getServletContext().getRealPath(savePath)+"\\"+this.uploadFileName[i];
   File target=new File(path);
   upLoad(this.upload[i],target);
  }
  return "success";
 }
 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;
 }
 public String getSavePath() {
  return savePath;
 }
 public void setSavePath(String savePath) {
  this.savePath = savePath;
 }
 public Date getUpTime() {
  upTime=new Date();
  return upTime;
 }
 public void setUpTime(Date upTime) {
  this.upTime = upTime;
 }
}
第二步,创建上传界面ArrayfileUpUI.jsp,其代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<s:form action="Arrayfile_execute" namespace="/"   enctype="multipart/form-data">
<s:file name="upload" label="文件1:"></s:file>
<s:file name="upload" label="文件2:"></s:file>
<s:file name="upload" label="文件3:"></s:file>
<s:submit value="确定"></s:submit>
</s:form>
</html>

第三步,创建上传成功界面fsuccess.jsp代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s"  uri="/struts-tags" %>
<s:iterator value="uploadFileName" status="st">
<tr>
<td><s:property value="uploadFileName[#st.getIndex()]"/></td>
<td><s:date name="upTime" format="yyyy-MM-dd HH:mm:ss"/></td>
</tr>
</s:iterator>
</html>
第四步,配置struts.xml

<action name="Arrayfile_*" class="cn.test.fileUp.FileUpArrayAction" method="{1}">
        <param name="savePath">/upload</param>
        <result name="ArrayfileUpUI">/WEB-INF/jsp/ArrayfileUpUI.jsp</result>
        <result name="success">/WEB-INF/jsp/fsuccess.jsp</result>
        </action>

第五步,部署项目,启动tomcat,在浏览其中输入:http://localhost:8080/MyWeb/Arrayfile_ArrayfileUpUI

猜你喜欢

转载自673390302.iteye.com/blog/2292692