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