使用struts1 多文件上传时的错误

发布于 2022-09-06 10:01:57 字数 5231 浏览 31 评论 0

使用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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

想挽留 2022-09-13 10:01:58

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

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

鱼窥荷 2022-09-13 10:01:58

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文