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

2016-02-19 10:31 3 1 收藏

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

【 tulaoshi.com - 编程语言 】

在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"/

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

/form

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

action代码如下:
代码如下:

package com.inspur.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 {
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://www.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来封装文件域参数。实现多个文件的同时上传。

来源:https://www.tulaoshi.com/n/20160219/1594925.html

延伸阅读
这是第一个类,与表中的信息相对应(当然如果只是简单的文件上传可以不用这样麻烦,之所以这样作是因为传到数据库里容易管理) package tester.business.maitain; public class Trainplan { private int p_id; private String p_title; private int post_index; private String issue_time; private String issuer; private String p_con...
标签: ASP
  简介 文件上传是将任意的文件从客户机发送到服务器的过程。最简单、最方便的上传方法是使用支持RFC1867的浏览器,如微软的Internet Explorer4.0以上版本,Netscape3.0以上版本,或者带附件的Internet Explorer3.0。基于浏览器的文件上传是通过带有属性ENCTYPE="multipart/form-data"的HTML form实现的。这个form也必须包含一...
最后看看struts-config页面的内容 ?xml version="1.0" encoding="UTF-8"? !DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd" struts-config form-beans form-bean name=...
这是view页面viewtrainplan.jsp(上一张jsp名为planManage.jsp) %@ page contentType="text/html; charset=UTF-8" % %@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" % %@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" % %@ taglib uri="/WEB-INF/struts-l...
package tester.business.maitain; import tclcc.tester.business.maitain.Trainplan; import tclcc.tester.util.DBConn; import java.sql.*; import java.util.*; public class TrainPlanDAO { private DBConn dbconn = null; private Connection conn = null; private static final String ADD_TRAINPLAN= "INSERT INTO KS_TRAINPL...

经验教程

960

收藏

97
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部