천쓰의 개발동산

SRPING BOOT - 파일 DB 저장 하여 사용하는 방법 본문

JAVA/SPRINGBOOT

SRPING BOOT - 파일 DB 저장 하여 사용하는 방법

인천쓰 2024. 7. 9. 18:34
반응형

파일을 저장하여, 다운로드까지 쓰는 자료실을 구현을 맡아 진행하였다.

 

일단 사이트에서 파일을 내가 설정한 경로로 저장을 할수있게 

 

application.properties 에 경로 설정하여 @VALUE로 뽑아쓰면된다 ! 

nas.filepath=/path/to/nas/directory

 

나는 .env 방식으로 썻지만 설명을 간단하게 하기위해 이방법으로 설명하겠다

 

 

//서비스
	@Value("${nas.filepath}")
    private String nasFilePath;

    public List<String> saveFiles(List<MultipartFile> files) throws IOException {
        Path root = Paths.get(nasFilePath);

        if (!Files.exists(root)) {
            Files.createDirectories(root);
        }

        List<String> filePaths = new ArrayList<>();

        for (MultipartFile file : files) {
            if (file.isEmpty()) {
                throw new IOException("Failed to store empty file " + file.getOriginalFilename());
            }
            Path destinationFile = root.resolve(Paths.get(file.getOriginalFilename())).normalize().toAbsolutePath();
            Files.copy(file.getInputStream(), destinationFile);
            filePaths.add(destinationFile.toString());
        }

        return filePaths;
    }



////////////////////////////////////////////////////////////////////////////////////////////////
//컨트롤
    @PostMapping("/upload")
    public ResponseEntity<List<String>> uploadFiles(@RequestParam("files") List<MultipartFile> files) {
        try {
            List<String> filePaths = fileUploadService.saveFiles(files);
            return ResponseEntity.status(HttpStatus.OK).body(filePaths);
        } catch (Exception e) {
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
        }
    }

 

그후 서비스에 파일들을 가져오기위해 list하여 풀어서 데이터를 뽑아주면 끝이다 . 간단하죠?

 

이걸 응용하면 db에는 저장된 경로와 파일명이 받아지고, 나중에 그경로에서 데이터를 뽑아 다운로드나 출력을 해주면 된다 . 

 

파일을 로컬에다 저장하면 이미지같은 출력을 할때 문제가 생기니 꼭 리눅스 nas환경에 저장해서 쓰길바란다 

다운로드 하는부분엔 문제없이 쓸수있다.

 

 

응용은 본인의 몫! 

반응형