사용환경

  • MacBook Air (M1, 2020) 16GB
  • JDK 8
  • Spring Tool Suite 4.14.0
  • tomcat 8.5


에러의 발생

@RequestMapping(value = "/write_review", method = RequestMethod.POST)
public String writeReviewPOST(HttpServletRequest request, MultipartFile file) throws Exception {
    BoardReviewVO vo = new BoardReviewVO();
    vo.setProd_num(Integer.parseInt(request.getParameter("prod_num")));
    vo.setReview_content(request.getParameter("review_content"));
    vo.setReview_rating(Float.parseFloat(request.getParameter("review_rating")));
    vo.setReview_title(request.getParameter("review_title"));
    vo.setUser_num(Integer.parseInt(request.getParameter("user_num")));
    vo.setReview_ip(request.getRemoteAddr());
		
    // 리뷰 이미지파일명: review_리뷰글번호
    String fileName = "review_" + service.getLastReviewNum() + 1;
		
    File targetFile = new File(reviewImgUploatPath, fileName);
    FileCopyUtils.copy(file.getBytes(), targetFile);

    vo.setReview_image(fileName);
		
    service.insertReview(vo);
		
    return "redirect:/product/product_detail?prod_num=" + vo.getProd_num();
}
  • jsp 파일에서 enctypemultipart/form-data로 지정하고 컨트롤러에서 MultipartFile로 받게 했는데 file 변수의 값이 자꾸 null로 나오는 것이었다. 수업시간에 한대로 따라했는데 이게 뭐람


문제 해결

@RequestMapping(value = "/write_review", method = RequestMethod.POST)
public String writeReviewPOST(HttpServletRequest request, 
        @RequestParam(value = "review_image", required = false) MultipartFile file) throws Exception {
        // ...생략
}
  • 위처럼 MultipartFile 변수가 어떤 파라미터와 연관이 있는지 지정해 주어야 했다. 파일 업로드 태그는 하나 뿐이었건만 함께 넘어오는 파라미터가 많아서 못 찾은 걸까? 어쨌든 새로운 사실도 알게 되었고 문제도 해결했다.


참고