티스토리 뷰

반응형

 

 

 

 

업로드된 파일 폼

 

 

input file로 업로드를 하고 업로드된 파일에 다운로드를 링크를 a 태그로 걸어 다운로드 하기.

 

 

과거 spring 에서는 tomcat server.xml 에 다운로드 폴더를 context path에 추가하고

/도메인/{#context path#}/{#파일명#} 

 

이런식으로 다운로드 url을 간단하게 생성해서 썼었었다.

 

 

하지만 springboot 에서는 내장 tomcat이 자동으로 설정되기 때문에 docbase 를

내가 application.yml 에 지정하긴 힘들고 (변수 발생 가능)

EmbeddedServletContainerCustomizer 인터페이스로 톰캣 구성을 설정해 줄 수는 있는데...

그냥 파일다운로드 컨트롤러 하나 생성하는게 더 올바른 방법일 것 같음 ㅋㅋㅋ

 

 

 

위 이미지 업로드 파일을 

/도메인/download/{파일id} 로 url을 생성하려고 한다.

 

 

@GetMapping(value="/download/{uuid}")
    public ResponseEntity<Resource> download(@PathVariable String uuid) throws MalformedURLException {

        AttachedFileDTO file = fileService.getFileInfo(uuid);

        String filename = file.getFilenameOriginal();
        String filePath = file.getFilePath() + File.separator + file.getFilenameReal();

        Resource resource = new UrlResource(Paths.get(filePath).toUri());

        return ResponseEntity.ok()
                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + UriUtils.encode(filename, "UTF-8") + "\"")
                .body(resource);
    }

파일 id 값으로 파일정보를 가져오는 서비스를 만들고

사용자에게 보여줄 업로드된 파일명,

서버에 실제 업로드 되어있는 경로와 실제파일명을 변수 할당하고

 

실제 정보파일을 리턴받아서 ResponseEntity body 에 전달한다.

헤더 정보도 파일로 바로 받을 수 있게 변경한다.

 

 

첨부파일명이 한글일 경우 인코딩없이 전달하면 다운로드 시 한글파일 명이 깨져서 보이니

utf-8 로 인코딩 할 것!

 

 

 

 

 

그럼 이제 사용자 화면에서 a tag로 파일다운로드 url 을 생성해준다.

 

<a id="download_link" href="/download/015ACEA16EA245D9E065000000000001">2023_테스트_엑셀파일_한글.xlsx</a>

다운로드 파일 링크를 클릭하면 

위에 작성한 controller 를 타면서 파일 다운로드가 된다.

 

 

 

 

반응형
댓글
반응형
최근에 올라온 글
«   2024/09   »
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
Total
Today
Yesterday