struts2中实现多个文件同时上传代码

YX5R0X

YX5R0X

2016-02-19 10:31

下面是个简单易学的struts2中实现多个文件同时上传代码教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

在upload.jsp页面中将多个文件域对象命名为相同的名字,这样在action中就可以将多个文件域解析成一个数组,数组的大小就是文件域的个数,同时一个文件域解析成三个对应的变量,因此多个文件域对应三个数组,其中每个数组的大小就是文件域的个数。jsp页面代码如下:
代码如下:

form action="upload.action" name="uploadForm" method="post" enctype="multipart/form-data"
文件标题:input type="text" name="title"/br/
选择文件-:input type="file" name="upload"/br/
选择文件二:input type="file" name="upload"/br/
选择文件三:input type="file" name="upload"/br/
input type="submit" value="upload"/

/form

对应的Action依次遍历所有文件域,然后生成对应的输入文件流,输出文件流在指定的服务器保存路径中添加对应的输出文件流保存文件。同时动态指定服务器上文件的 保存路径。

action代码如下:
代码如下:

package com.inspur.action;

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

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 {
private String title;
private File[] upload;
private String[] uploadFileName;
private String[] uploadContentType;
private String savePath;

public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public File[] getUpload() {
return upload;
}
public void setUpload(File[] upload) {
this.upload = upload;
}
public String[] getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String[] uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String[] getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String[] uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getSavePath() {
return ServletActionContext.getRequest().getRealPath(savePath);
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
public String upload()throws Exception{
File[] files=this.getUpload();
for(int i=0;ifiles.length;i++){
FileOutputStream fos=new FileOutputStream(this.getSavePath()+"\"+this.getUploadFileName()[i]);
byte[] buffer=new byte[1024];
FileInputStream fis=new FileInputStream(files[i]);
int len=0;
while((len=fis.read(buffer))0){
fos.write(buffer,0,len);
}
}

return SUCCESS;
}

}

struts.xml文件配置如下:配置文件上传的拦截器,允许 的上传文件类型,上传文件大小限制,同时引入defaultStack拦截器和上传文件在服务器上的保存位置
代码如下:

struts
constant name="struts.custom.i18n.resources" value="message"/constant
constant name="struts.i18n.encoding" value="gbk"/constant
package name="uploadMult" extends="struts-default" namespace="/"
action name="upload" class="com.inspur.action.UploadAction" method="upload"
interceptor-ref name="fileUpload"
param name="allowedTypes"image/bmp,image/png,image/gif,image/jpeg/param
param name="maximumSize"20000000000/param
/interceptor-ref
interceptor-ref name="defaultStack"/interceptor-ref
param name="savePath"/upload/param
result name="success"/success.jsp/result
result name="input"/upload.jsp/result
result name="error"/error.jsp/result
/action
/package

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

/struts


web.xml文件代码如下:配置了struts-cleanup过滤器,对文件的上传功能没有直接的影响,但是作为struts核心过滤器的辅助类是系统更加稳定,消除未知的异常。
代码如下:

filter
filter-namestruts-cleanup/filter-name
filter-classorg.apache.struts2.dispatcher.ActionContextCleanUp/filter-class
/filter
filter-mapping
filter-namestruts-cleanup/filter-name
url-pattern/*/url-pattern
/filter-mapping

在上传成功界面显示所有上传的图片:

success.jsp页面代码如下:
代码如下:

文件标题:s:property value="title"/br/
第一个图片:img alt="" src="s:property value="'upload/'+uploadFileName[0]"/"/br/
第二个图片:img alt="" src="s:property value="'upload/'+uploadFileName[1]"/"/br/

strus2同样支持使用list同时上传多个文件,其原理和数组是相同的,没有根本的差别。只不过就是将数组全部改成list。并且修改list的访问方法就可以用list来封装文件域参数。实现多个文件的同时上传。

展开更多 50%)
分享

猜你喜欢

struts2中实现多个文件同时上传代码

编程语言 网络编程
struts2中实现多个文件同时上传代码

在Struts 2中实现文件上传

编程语言 网络编程
在Struts 2中实现文件上传

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

无组件文件上传代码实例

ASP
无组件文件上传代码实例

struts2 session 解读

Web开发
struts2 session 解读

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

关于Struts2文件上传与自定义拦截器

编程语言 网络编程
关于Struts2文件上传与自定义拦截器

在Struts2中的结果集类型

编程语言 网络编程
在Struts2中的结果集类型

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

C# Stream 和 byte[] 之间的转换

C# Stream 和 byte[] 之间的转换

正则获取图片地址 链接地址

正则获取图片地址 链接地址
下拉加载更多内容 ↓