Programming/Spring
파일 여러 개 업로드, 배열로 여러 값 넘기기
juyinjang25
2017. 2. 6. 11:08
순서:
1) input 태그 여러 개 넣기
2) mhsr.getFiles() 이용해 여러 파일 받은 후, 반복문 돌리기
3) list로 이미지 경로 받아와 출력
1) input 태그 여러 개 넣기
**업로드할 파일 갯수 만큼
<ProductAddForm.jsp>
1 2 3 4 5 6 7 8 | <p> <label> file:</label> <input type="file" name="newfile"> </p> <p> <label> file:</label> <input type="file" name="newfile"> </p> | cs |
2) mhsr.getFiles() 이용해 여러 파일 받은 후, 반복문 돌리기
<ProductController.java>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | @RequestMapping(value="/insert.do", method=RequestMethod.POST) public String insert(Product product, Model model, HttpServletRequest req, RedirectAttributes rttr, MultipartHttpServletRequest mhsr) throws Exception{ logger.info("==================insert.do post start=============="); int insert = 0; ProductAlbum albumVo = new ProductAlbum(); List<MultipartFile> list = mhsr.getFiles("newfile"); if (list.size() > 0) { for(int i=0;i<list.size();i++){ if (list.get(i).getContentType().split("/")[0].equals("image")) { String saveDirectory = req.getSession().getServletContext().getRealPath("/resources/img"); ImgFileUploadUtil uploadUtil = new ImgFileUploadUtil(saveDirectory, list.get(i), "product"); boolean newFileFlag = false; newFileFlag = uploadUtil.newFile(); if(newFileFlag){ albumVo.setPhoto(uploadUtil.getNewFileName()); albumVo.setProduct_num(service.readCount()+1); if(i==0){ uploadUtil.makeThumbnail(100); } service.addProductAlbum(albumVo); //파일 저장 실패 }else{ insert = -2; } //contentType이 image가 아닐 경우 } else { insert = -1; } } } | cs |
3) list로 이미지 경로 받아와 출력
<ProductController.java>
1 2 3 4 5 6 7 8 | @RequestMapping(value="/detail.do", method=RequestMethod.GET) public String detail(int num, Model model) throws Exception{ List<Product> productList = service.readProduct(num); Product product = productList.get(0); model.addAttribute("product",product); model.addAttribute("productList",productList); return "product/ProductDetail"; } | cs |
<ProductDetail.jsp>
1 2 3 4 5 6 7 | <c:forEach items="${productList}" var="productList"> <p> <label> img:</label> <c:url value="/resources/img/${productList.photo}" var="imgUri"/> <img alt="빈 이미지 입니다." src="${imgUri}"> </p> </c:forEach> | cs |
순서:
1) checkbox 인풋 태그 만들기
2) 배열로 parameter 받아온 후, 반복문 돌리기
1) checkbox 인풋 태그 만들기
<CartList.jsp>
1 2 3 | <c:forEach items="${cartList}" var="cart"> <tr> <td><input type="checkbox" value="${cart.num}" name="num"> </td> | cs |
2) 배열로 parameter 받아온 후, 반복문 돌리기
<CartController.java>
1 2 3 4 5 6 7 8 9 10 | @RequestMapping("/insertBuy.do") public String insertBuy(@RequestParam("mem_num") int mem_num, @RequestParam("num") int[] nums, RedirectAttributes rttr) throws Exception{ int insert = 0; for(int i=0;i<nums.length;i++){ insert = service.addBuy(service.readCart(nums[i])); } rttr.addAttribute("mem_num",mem_num); rttr.addFlashAttribute("insert",insert); return "redirect:list.do"; } | cs |