개발자 구겹이

단순 파일 업로드 스프링부트 자바코드 본문

java/springboot

단순 파일 업로드 스프링부트 자바코드

@layers9 2024. 11. 4. 17:50

 

 

 

 

StringBoot의 Servlet (HttpServletRequest)기능으로 사용해서 업로드 할 거기 때문에

 

CRUD 게시판을 단순히 만들어 둔 곳에 input type=file을 추가하고

 

환경설정 몇가지를 해주면 됩니다.

 

 

 

1. HTML 코드 추가

<input type="file" name="file1" id="file1">

 

 

2. application.properties 파일에 설정 추가

 

spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-request-size=30MB
spring.servlet.multipart.max-file-size=10MB

 

 

3. @Transactional 서비스 구현 단 추가

@Autowired
    private HttpServletRequest request;


@Transactional
    public void uploadFile(MultipartHttpServletRequest multiRequest) throws Exception {

        Map<String, MultipartFile> fileMap = multiRequest.getFileMap();
        Iterator<Map.Entry<String, MultipartFile>> itr = fileMap.entrySet().iterator();
        MultipartFile file = null;

        String filePath = "C:\\Users\\USER\\Desktop\\userboard\\addfile\\";

        while (itr.hasNext()) {
            Map.Entry<String, MultipartFile> entry = itr.next();

            file = entry.getValue();

            String fileOriginalName = file.getOriginalFilename();

            if(!fileOriginalName.isEmpty()){
                File fileFolder = new File(filePath);

                if(!fileFolder.exists()){
                    if(fileFolder.mkdir()){
                        System.out.println("[file.mkdirs]: Success");
                    }
                }

                File saveFile = new File(filePath + fileOriginalName);

                file.transferTo(saveFile);
            }
        }
    }

 

 

4. Controller단 추가

@PostMapping("/register")
public String register(@RequestParam("title") String title, @RequestParam("content") String content, Model model, MultipartHttpServletRequest multiRequest) throws IOException {

    try{
        boardService.registerBoard(title, content);
        boardService.uploadFile(multiRequest);
    }catch(Exception e){
        throw new IOException(e);
    }
    return "redirect:/board";
}

 

 

 

기존의 title, content 파람에 이어 service간에 uploadFile 메소드 추가한 곳을 중점으로 업데이트해주시면 됩니다.