[Spring] File Upload

์šฐ์„  ํ™”๋ฉด์—์„œ form ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ๊ฑด 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

<form name="detailForm" method="post" enctype="multipart/form-data">
	<input type="file" multiple="multiple" name="file" class="ct_input_g">
    ...
</form>
  1. form ํƒœ๊ทธ์˜ { enctype=โ€multipart/form-dataโ€ } -> ํŒŒ์ผ ์—…๋กœ๋“œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

  2. input ํƒœ๊ทธ์˜ { type=โ€fileโ€, multiple=โ€multipleโ€ } -> ํŒŒ์ผ ๋‹ค์ค‘์—…๋กœ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ํŒŒ์ผ์„ ์˜ฌ๋ ธ๋‹ค๋ฉด, Controller ์—์„œ ์ธ์ž๋กœ HttpServletRequest ๋ง๊ณ  MultipartHttpServletRequest ๋ฅผ ๋ฐ›์•„์•ผ ํ•œ๋‹ค.

MultipartHttpServletRequest :

HttpServletRequest ๋ฅผ ์ƒ์†๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ์—, HttpServletRequest ๊ธฐ๋Šฅ ๊ทธ๋Œ€๋กœ ์“ธ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ™•์žฅ๋œ ๊ธฐ๋Šฅ(ํŒŒ์ผ)์ด ๋งŽ์•„์„œ ํŽธํ•˜๋‹ค.

๋˜, ~Request ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ํŒŒ์ผ ์ €์žฅ๊ฒฝ๋กœ๋Š” ํ•˜๋“œ์ฝ”๋”ฉํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

@RequestMapping(value="addProduct", method=RequestMethod.POST)
public String addProduct(
            @ModelAttribute("product") Product product,
            MultipartHttpServletRequest request,
            @RequestParam("file") MultipartFile[] file ) throws Exception {
    //String uploadPath = request.getSession().getServletContext().getRealPath("/");
    String uploadPath = request.getRealPath("../images/uploadFiles");
    String fileOriginName = "";
    String fileMultiName = "";
    for(int i=0; i<file.length; i++) {
        fileOriginName = file[i].getOriginalFilename();
        System.out.println("๊ธฐ์กด ํŒŒ์ผ๋ช… : "+fileOriginName);
        SimpleDateFormat formatter = new SimpleDateFormat("YYYYMMDD_HHMMSS_"+i);
        Calendar now = Calendar.getInstance();

        String extension = fileOriginName.split("\\.")[1];  // ํ™•์žฅ์ž๋ช…
        fileOriginName = formatter.format(now.getTime())+"."+extension;  // //fileOriginName์— ๋‚ ์งœ+.+ํ™•์žฅ์ž๋ช…์œผ๋กœ ์ €์žฅ์‹œํ‚ด.
        System.out.println("๋ณ€๊ฒฝ๋œ ํŒŒ์ผ๋ช… : "+fileOriginName);
        File f = new File(uploadPath+"\\"+fileOriginName);
        file[i].transferTo(f);
        if(i==0) {
            fileMultiName += fileOriginName;
        } else {
            fileMultiName += ","+fileOriginName;
        }
    }
    System.out.println("*"+fileMultiName);
    product.setFileName(fileMultiName);
    productService.addProduct(product);
    return "forward:/product/getProduct.jsp";
}

Leave a comment