添加图书既要批量添加又要图片上传怎么一起实现啊
这种方法不行
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
同学你好,同学可以参考如下思路来理解:
批量添加主要问题是怎么将表单数据取出来。
同学已经贴出了文件上传的代码内容,表单数据都是存放到List<FileItem> list中。之前是执行完一次循环,就遍历完所有表单数据了。现在多条表单的数据都存放到了list中,而且是按照表单从上到下,从左到右的顺序,顺序存放到list中的。
也就是批量添加数据时的多条数据都在list中,那就需要知道循环遍历到什么地方,是第一条数据,遍历到什么地方是第二条数据。如果表单中的需要取得的book元素有6个,那么就在循环中加一个整型变量进行计数,当总数%6==0时,说明一条数据遍历完毕。数据遍历出来了,就可以添加到数据库,或者做其他处理了。
同学可以参考这个思路来设计完成自己的批量添加的内容。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星