使用struts1 多文件上传时的错误
使用struts多文件上传时出现如下错误
javax.servlet.ServletException: java.lang.RuntimeException: Unknown entity: org.apache.struts.upload.CommonsMultipartRequestHandler$CommonsFormFile
java.lang.RuntimeException: Unknown entity: org.apache.struts.upload.CommonsMultipartRequestHandler$CommonsFormFile
上传时,只能上传最后一张图,然后就报上述错误;
form类如下
//照片列表
private List<FormFile> photos = new ArrayList<FormFile>();
public List<FormFile> getAllPhoto() {
return photos;
}
public FormFile getPhotos(int i) {
return photos.get(i);
}
public void setPhotos(int i,FormFile photos) {
this.photos.add(photos);
}
action类如下
AlbumForm af = (AlbumForm) form;
FormFile photo = null;
Users u= (Users)request.getSession().getAttribute("loginInfo");
String userId =u.getId().toString();
String albumId = request.getParameter("albumId");
Album album = (Album) photoServiceImp.findById(Album.class, Integer.valueOf(albumId));
String webSavePath = "/images/upload/"+u.getId()+"/album/"+albumId;
String upPath = request.getSession().getServletContext().getRealPath(webSavePath);
System.out.println(albumId+"--"+userId+"\r\n"+upPath+"\r\n");
System.out.println("文件个数:"+af.getAllPhoto().size());
//循环上传照片
for (int i = 0; i < af.getAllPhoto().size(); i++) {
Photo p = new Photo();
photo = af.getPhotos(i);
System.out.println(photo.getFileName());
try {
String saveName = MyFileStream.uploadFile(photo, upPath);
p.setAddTime(new Date());
p.setAlbum(album);
p.setPhoto(webSavePath+"/"+saveName);
System.out.println(webSavePath+"/"+saveName);
photoServiceImp.save(photo);
} catch (Exception e) {
// TODO: handle exception
throw new RuntimeException(e.getMessage());
}
}
return mapping.findForward("goOneAlbumUI");
注:文件上传类MyFileStream,没问题,单文件可以上传无误。
html表单信息:
<form action="${pageContext.request.contextPath}/album.do?flag=addPhotos&xyz=<%=Math.random()%>" method="post"
enctype="multipart/form-data">
<table width="80%" cellpadding="5" cellspacing="5">
<tr id="more">
<td align="left" rowspan="15" width="20%" valign="top">
<font class="word3"><b>上传照片:</b> <br /> 你可以上传JPG,
JPEG, GIF, PNG或BMP文件。</font>
</td>
<td>
<input type="file" name="photos[0]" class="wby" size="40" />
</td>
</tr>
<!-- 动态生成 -->
<tr id="add">
<td>
<input type="button" value="上传更多..." onclick="addMore()">
</td>
</tr>
<tr>
<td>
<input type="hidden" name="albumId" value="${albumId}" />
</td>
<td>
<input type="submit" class="sub" value="上传照片"
style="width: 100px"/>
<input type="reset" class="sub" value="取消"
style="width: 60px"/>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<font class="word3">每批上传限制在10张,总大小不超过15MB,如果你上传不了,请试试更小的照片。</font>
</td>
</tr>
</table>
</form>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
???,没人遇到这个问题吗??
找到问题了,在保存时save(obj);我把obj放错了,本来应该放domain对象;但放成,FormFile对象了,
这里没有指定name属性,不知道你更多的文件名保存在哪个控件里?