添加图书既要批量添加又要图片上传怎么一起实现啊

添加图书既要批量添加又要图片上传怎么一起实现啊

这种方法不行

public void add(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException, FileUploadException {
   Book book = new Book();
   FileItemFactory fileItemFactory = new DiskFileItemFactory();
   ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
   List<FileItem> list = servletFileUpload.parseRequest(request);
   for (FileItem fileItem : list) {
       if (fileItem.isFormField()) {
           if (fileItem.getFieldName().equals("name")) {
               book.setName(fileItem.getString("utf-8"));
           }
           if (fileItem.getFieldName().equals("categoryId")) {
               book.setCategoryId(Integer.parseInt(fileItem.getString("utf-8")));
           }
           if (fileItem.getFieldName().equals("level")) {
               book.setLevel(Integer.parseInt(fileItem.getString("utf-8")));
           }
           if (fileItem.getFieldName().equals("price")) {
               book.setPrice(Integer.parseInt(fileItem.getString("utf-8")));
           }
       } else {
           if (fileItem.getFieldName().equals("smallImg")) {
               if (fileItem.getSize() <= 100)
                   continue;
               String rootPath = request.getServletContext().getRealPath("/");
               String path = fileItem.getName();
               String type = ".jpg";
               if (path.indexOf(".") != -1) {
                   type = path.substring(path.lastIndexOf("."));
                   System.out.println(type);
               }
               path = "/download/images/" + System.currentTimeMillis() + type;
               System.out.println(path);
               try {
                   fileItem.write(new File(rootPath + path));
                   book.setImgPath(path);
                   bookBiz.add();
               } catch (Exception e) {
                   e.printStackTrace();
               }
           }
       }
   }
}

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小班 2020-01-08 17:33:09

同学你好,同学可以参考如下思路来理解:

    批量添加主要问题是怎么将表单数据取出来。

    同学已经贴出了文件上传的代码内容,表单数据都是存放到List<FileItem> list中。之前是执行完一次循环,就遍历完所有表单数据了。现在多条表单的数据都存放到了list中,而且是按照表单从上到下,从左到右的顺序,顺序存放到list中的。

       也就是批量添加数据时的多条数据都在list中,那就需要知道循环遍历到什么地方,是第一条数据,遍历到什么地方是第二条数据。如果表单中的需要取得的book元素有6个,那么就在循环中加一个整型变量进行计数,当总数%6==0时,说明一条数据遍历完毕。数据遍历出来了,就可以添加到数据库,或者做其他处理了。

同学可以参考这个思路来设计完成自己的批量添加的内容。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 qq_兜兜_4 #1
    还是不行,有没有参考代码
    2020-01-08 17:54:45
  • 好帮手慕小班 回复 提问者 qq_兜兜_4 #2
    同学你好,代码的实现具有灵活性,每个人都会有自己的实现思路,所以老师并没有标准的源代码,不过同学可以参考这个问答中的代码,根据自己的理解来完成代码 https://class.imooc.com/course/qadetail/178176 如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2020-01-08 18:57:32
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师