多文件上传
来源:互联网 发布:龙岗网络推广szaow 编辑:程序博客网 时间:2024/05/29 17:11
多文件上传
实际项目中避免不了多文件上传,对于这种情况可以为file设置不同的name然后按照单文件上传的方式逐个上传,但是这种方式比较傻,下面介绍使用数组或者list实现上传
不多说,看代码:
jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> </head> <body> <form action="MultiUpload.action" method="post" enctype="multipart/form-data"> 文件1:<input type="file" name="upload"/><br/> 文件2:<input type="file" name="upload"/><br/> 文件3:<input type="file" name="upload"/><br/> <input type="submit" value="上传"/> </form> </body></html>
MultiUpload.java
package Action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.List;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class MultiFileUpload extends ActionSupport { private File [] upload; private List<String> uploadContentType; private List<String> uploadFileName; private String savePath; public String execute() throws Exception{ File [] uploadFiles = getUpload(); for(int i=0; i < uploadFiles.length; i++){ //读入 FileInputStream fis = new FileInputStream((File)uploadFiles[i]); //写出 FileOutputStream fos = new FileOutputStream(getSavePath()+"\\"+ getUploadFileName().get(i)); byte [] buffer = new byte[1024]; int len = 0; while((len = fis.read(buffer)) > 0){ fos.write(buffer,0,len); } } return SUCCESS; } public File[] getUpload() { return upload; } public void setUpload(File[] upload) { this.upload = upload; } public List<String> getUploadContentType() { return uploadContentType; } public void setUploadContentType(List<String> uploadContentType) { this.uploadContentType = uploadContentType; } public List<String> getUploadFileName() { return uploadFileName; } public void setUploadFileName(List<String> uploadFileName) { this.uploadFileName = uploadFileName; } public void setSavePath(String savePath) { this.savePath = savePath; } public String getSavePath() { return ServletActionContext.getRequest().getRealPath(savePath); }}
struts.xml
<action name="MultiUpload" class="Action.MultiFileUpload"> <param name="savePath">/upload</param> <result>/success2.jsp</result> </action>
通过debug模式下查看自己上传的文件相应的值:
File [] uploadFiles :
[
F:\Users.metadata.me_tcat\work\Catalina\localhost\test\upload_17295b0b_3bd6_49b1_a7a8_e2f8b42141ac_00000000.tmp,
F:\Users.metadata.me_tcat\work\Catalina\localhost\test\upload_17295b0b_3bd6_49b1_a7a8_e2f8b42141ac_00000001.tmp,
F:\Users.metadata.me_tcat\work\Catalina\localhost\test\upload_17295b0b_3bd6_49b1_a7a8_e2f8b42141ac_00000002.tmp
]
UploadFileName():
[
20140530165433234 (1).jpg,
20140530165433234.jpg,
20140530165433234 (1).jpg
]
还有一种实现方式:
修改MultiUpload.java,使用数组的方式上传:
package Action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.List;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class MultiFileUpload2 extends ActionSupport { private File [] upload; private String [] uploadContentType; private String [] uploadFileName; private String savePath; public String execute() throws Exception{ File [] files = getUpload(); for(int i=0;i< files.length;i++){ FileInputStream fis = new FileInputStream(files[i]); FileOutputStream fos = new FileOutputStream(getSavePath()+"\\" +getUploadFileName()[i]); byte [] buffer = new byte[1024]; int len = 0; while((len = fis.read(buffer)) > 0){ fos.write(buffer,0,len); } } 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() { this.savePath = ServletActionContext.getRequest().getRealPath(savePath); return savePath; } public void setSavePath(String savePath) { this.savePath = savePath; }}
和第一个action文件没啥大的差别仅仅是实现的方式不同罢了
- 文件上传(多文件)
- asp.net文件上传,多文件上传。
- 单文件上传、多文件上传
- struts2文件上传与多文件上传
- 单文件上传和多文件上传
- PHP文件上传功能 -- 多文件上传
- struts2文件上传(多文件上传)
- SpringMVC文件上传 多文件上传实例
- Struts2之文件上传,多文件上传
- SpringMVC文件上传 多文件上传实例
- 文件上传及多文件上传
- Spring boot 文件上传(多文件上传)
- Struts文件上传--2.多文件上传
- spring boot文件上传【多文件上传】
- FastDFS上传文件二 : 多文件上传
- 多文件上传
- 单/多文件上传
- 多个文件上传
- SOJ 4454 (矩阵快速幂)
- C++中的成员变量是独立的,成员方法是共享的。
- Unable to create requested service [org.hibernate.service.jdbc.connections.spi.ConnectionProvider]
- hdu 2089 数位DP初探
- 目标检测的图像特征提取之(一)HOG特征
- 多文件上传
- SqlServer数据库-日期转换处理函数,非常强大
- 目标检测的图像特征提取之(二)LBP特征
- cocos2dx3.9 + android studio2.0 搭建项目
- 目标检测的图像特征提取之(三)Haar特征
- 一种联系人列表的显示方法及装置
- JDBC学习笔记(3)之jdbc简单封装
- (Win32): 已加载“C:\Windows\System32\ntdll.dll”。无法查找或打开 PDB 文件。
- Oracle Data Guard 理论知识