用struts文件实现多文件上传

页面:

<form action="multiFileUpload" method="post" enctype="multipart/form-data">

  选择第一个文件:<input type="file" name="upload" size="50" /><br />

  选择第二个文件:<input type="file" name="upload" size="50" /><br />

  选择第三个文件:<input type="file" name="upload" size="50" /><br />

  <input type="submit" value="上传" />

  </form>

Struts.xml:

<action name="multiFileUpload"

class="control.MultiFileUploadAction">

<param name="savePath">/upload</param>

<result name="success">/index.jsp</result>

</action>

MultiFileUploadAction.java:

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class MultiFileUploadAction extends ActionSupport {

private static final int BUFFER_SIZE=16*1024;

//File数组来封装多个上传文件域对象

private File[] upload;

//String数组来封装多个上传文件名

private String[] uploadFileName;

//String数组来封装多个上传文件类型

private String[] uploadContentType;

//保存文件的目录路径(通过依赖注入)

private String savePath;

public String execute() {

File[] srcFiles=this.getUpload();

//处理每个要上传的文件

for(int i=0;i<srcFiles.length;i++){

//根据服务器的文件保存地址和原文件名创建目录文件全路径

String dstPath=ServletActionContext.getServletContext().getRealPath(this.getSavePath())+"\\"+this.getUploadFileName()[i];

File dstFile=new File(dstPath);

this.copy(srcFiles[i], dstFile);

}

return SUCCESS;

}

//自己封装的一个把源文件对象复制成目标文件对象

private static void copy(File src,File dst){

InputStream in=null;

OutputStream out=null;

try{

in=new BufferedInputStream(new FileInputStream(src),BUFFER_SIZE);

out=new BufferedOutputStream(new FileOutputStream(dst),BUFFER_SIZE);

byte[] buffer=new byte[BUFFER_SIZE];

int len=0;

while((len=in.read(buffer))>0){

out.write(buffer,0, len);

}

}catch(Exception e){

e.printStackTrace();

}finally{

if(null!=in){

try {

in.close();

} catch (Exception e2) {

e2.printStackTrace();

}

}

if(null!=out){

try {

out.close();

} catch (Exception e2) {

e2.printStackTrace();

}

}

}

}

}

转载于:https://my.oschina.net/u/1253389/blog/160215

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值