SpringBoot 파일 업로드 및 다운로드 원리 분석

기술 개술
우리 의 프로젝트 는 논단 을 실현 하 는 것 이다.포럼 에 블 로 그 를 올 릴 때 는 파일 을 올 릴 수 있어 야 하고,사용자 가 블 로 그 를 읽 을 때 는 파일 을 다운로드 할 수 있어 야 한다.그래서 저 는 SpringBoot 의 업로드 와 다운로드 파일 을 배 웠 습 니 다.기술 의 난점 은 선반 을 사용 하고 파일 의 실제 저장 주 소 를 숨 기 는 것 이 라 고 생각 합 니 다.
기술 상술
자신의 서버 를 도상 으로 사용 하기 위해 서 는
먼저 WebMvcConfigure 를 설정 합 니 다.SpringBoot 2.0 이후 버 전 은 WebMvcConfigure 구현 클래스 를 사용 하여 설정 할 수 있 습 니 다.
WebMvcConfigurer 인 터 페 이 스 를 실현 하 는 실체 클래스 를 만 드 는 것 입 니 다.

public class WebConfiguration implements WebMvcConfigurer {

}
사용자 정의 자원 맵 을 만 드 는 데 사용 되 는 override 방법

addResourceHandlers(ResourceHandlerRegistry registry)
springboot 에서 우 리 는 addResource Handlers 를 다시 쓰 는 방법 으로 정적 자원 디 렉 터 리 를 비 출 수 있 습 니 다.
구체 적 인 방법:이러한 종류의 addResource Handlers 방법 을 다시 작성 합 니 다.그 중에서 addResource Handler 는 맵 경 로 를 가리 키 고 addResource Locations 는 자원 파일 경 로 를 가리킨다.
자원 파일 경로 주 소 는 파일 디 렉 터 리 의 윗 층 을 가리 키 는/끝으로 해 야 합 니 다.

  public static final String FILE_ATTACHMENT_SAVE_ROOT = "/root/**/";
    public static final String ORIGINAL_ATTACHMENT_ADDRESS = "/files/**";

 @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {      
registry.addResourceHandler(ORIGINAL_ATTACHMENT_ADDRESS).addResourceLocations("file:" + FILE_ATTACHMENT_SAVE_ROOT);
    }
파일 을 업로드 하고 파일 주 소 를 데이터베이스 에 저장 합 니 다.

public ResponseMessage releaseBlog( @RequestParam(value = "attachments", required = false) MultipartFile[] attachments) throws IOException {
        if (attachments != null) {
            for (MultipartFile attachment : attachments) {
                File file = new File((WebConfiguration.FILE_ATTACHMENT_SAVE_ROOT + UUID.randomUUID() + attachment.getOriginalFilename()).replace("-", ""));
                try {
                    attachment.transferTo(file);
                } catch (IOException e) {
                    if (file.exists()) {
                        file.delete();
                    }
                    e.printStackTrace();
                    throw new BaseException(ExceptionInfo.UPLOAD_ATTACHMENT);
                }
            }
        }
}
파일 다운로드:먼저 데이터 베 이 스 를 조회 하고 전단 에 비 친 주 소 를 되 돌려 줍 니 다.전단 인터페이스 는 비 친 주 소 를 사용자 에 게 표시 합 니 다.사용 자 는 비 친 주 소 를 통 해 파일 에 다운로드 할 수 있 습 니 다.

문제 및 해결 과정
4.567917.인터페이스 테스트 를 할 때 저 는 로 컬 파일 의 주 소 를 전단 으로 백 엔 드 에 전달 하 는 매개 변수 로 올 렸 는데 실패 하 는 것 을 발 견 했 습 니 다.그래서 전단 에서 들 려 오 는 주소 가 무엇 인지 이해 할 수 없 었 습 니 다.(백 엔 드 프로 그래 밍 에 영향 을 주지 않 지만 깊이 이해 할 수 있다 고 생각 합 니 다)나중에 관련 문서 함 수 를 보 았 습 니 다.전단 에 파일 을 업로드 하 는 것 을 발견 하면 먼저 파일 의 주 소 를 임시 주소 로 설정 한 다음 이 임시 주 소 를 백 엔 드 로 전달 합 니 다
  • 사용자 정의 자원 맵 을 할 때 addResource Handler 는 맵 경 로 를 가리 키 고 addResource Locations 는 자원 파일 경 로 를 가리 키 며 자원 파일 경로 주 소 는/로 끝나 야 하 며 파일 디 렉 터 리 의 윗 층 을 가리 키 고 있어 야 합 니 다.나 는 코드 를 쓸 때 이해 하지 못 해서 파일 을 업로드 하 는 부분 을 데이터베이스 에 저장 하 는 주소 가 처음에 잘못 되 었 다
  • 총결산
    파일 업로드 기능 은 흔 하지만 파일 업로드 후의 구체 적 인 원 리 를 잘 모 르 는 사람 이 많다.자신의 서버 를 사용 하여 실제 파일 을 저장 할 수 있 습 니 다.이러한 구체 적 인 실현 은 가상 경 로 를 설정 하여 파일 의 실제 절대 경 로 를 매 핑 해 야 합 니 다.이런 방법 은 더욱 안전 하 며,동시에 외부 네트워크 를 직접 방문 할 수 있 게 한다.
    블 로그 작성 자:pqq 의 팬 동생
    여기 서 SpringBoot 업로드 와 다운로드 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 SpringBoot 업로드 다운로드 파일 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기