struts2多文件上传时,比如:
xx.jsp中包含两个同名的文本框和文件域。这里运行用户只填写用户名。文件选填
<form name="myform" method="post" action="add.action" enctype="multipart/form-data">
<input type="text" name="user" /><input type="file" name="pic" />
<input type="text" name="user" /><input type="file" name="pic" />
</form>
在Action类文件如下(只写关键部分)
Java code
private List<File> pic;
private List<String> user;
//对应的getter 和 setter方法略
public String execute(){
//(1)下面种情况,只有当文件域都为空或者都不为空时可用。
for(int i=0;i<user.size();i++){
if(pic!=null){
//上传文件和将user,pic路径信息写入数据库.
}else{
//只将user信息写入数据库.
}
}
//(1)下面种情况,必须文件域都不为空,否则将抛出nullpointexception。
for(int i=0;i<user.size();i++)
if(pic.get(i)!=null){
//上传文件和将user,pic路径信息写入数据库.
}else{
//只将user信息写入数据库.
}
}
自己测试了下:System.out.print(user.size());值都等于2
System.out.pring(pic.size());当两个文件域都为空是=0,一个填写=1,都填写=2
这样的话,就不好将对应的信息写入数据库了。请教解决办法
spring File类型 Action
------解决方案--------------------
把user和pic用一个类User封装起来
action:
private List<User> people;
xx.jsp:
<form name="myform" method="post" action="add.action" enctype="multipart/form-data">
<input type="text" name="people.user" /><input type="file" name="people.pic" />
<input type="text" name="people.user" /><input type="file" name="people.pic" />
</form>