使用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>
                                                    &nbsp;
                                                    <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>

阅读 2.8k
2 个回答

???,没人遇到这个问题吗??

找到问题了,在保存时save(obj);我把obj放错了,本来应该放domain对象;但放成,FormFile对象了,

<input type="button" value="上传更多..." onclick="addMore()">

这里没有指定name属性,不知道你更多的文件名保存在哪个控件里?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题