如何使用Apache commons获取表单单独传回的数据?(需求在注释)
private void addBook(HttpServletRequest request, HttpServletResponse response){
book = new Book();
FileItemFactory factory = new DiskFileItemFactory();
/**
*需求是获取书本名称和价格 通过mybatis查询获取书本是否唯一(返回书本对象可能是空值也可能是查询到)
* 这里希望先把书名和价格抓取出来,通过filItem上面方法可以实现呢?
*/
ServletFileUpload sf = new ServletFileUpload(factory);
try {
List<FileItem> formData = sf.parseRequest(request);
for(FileItem fileItem:formData){
if(fileItem.isFormField()){
System.out.println("common files"+ fileItem.getFieldName()+":"+ fileItem.getString("UTF-8"));
switch (fileItem.getFieldName()){
case "name":
book.setName(fileItem.getString("UTF-8"));
break;
case "categoryId":
book.setCategoryId(Long.valueOf(fileItem.getString("UTF-8")));
break;
case "level":
book.setLevel(Integer.valueOf(fileItem.getString("UTF-8")));
break;
case "price":
book.setPrice(Integer.valueOf(fileItem.getString("UTF-8")));
break;
}
}else{
System.out.println("files options :"+fileItem.getFieldName());
String imgPath = request.getServletContext().getRealPath("/img");
System.out.println(imgPath);
String fileName = UUID.randomUUID().toString();
String suffix = fileItem.getName().substring(fileItem.getName().lastIndexOf("."));
System.out.println(imgPath);
System.out.println(fileName);
fileItem.write(new File(imgPath,fileName+suffix));
book.setImgPath("/img/"+fileName+suffix);
}
}
bookService.insert(book);
response.sendRedirect("/admin/book/list");
} catch (FileUploadException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}21
收起
正在回答 回答被采纳积分+1
4回答
狂野男孩_程序猴
2022-06-25 13:11:18
java工程师2020版
- 参与学习 人
- 提交作业 9410 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星