본문으로 바로가기
반응형

얼마전, 로컬 파일 시스템에 저장되어 있는 파일을 바이너리 형태로 내려주는 REST API를 작성할 일이 있었습니다.
파일을 내려줄 때 Content-Type 헤더에 Mime Type을 알맞게 지정해줘야 하는데요. 찾아보니 다음과 같은 방법으로 할 수 있었습니다.

Path filePath = Paths.get("file/save/path");
String fileContentType = Files.probeContentType(path);

시스템에 따라 파일 타입을 감지하지 못하는 경우도 있는데요. 제 경우엔 Mac OSX에서 파일 타입을 감지하지 못하는 경우가 있었습니다.
때문에 알아보니 URLConnection을 이용하는 방법도 있었습니다.

URLConnection.guessContentTypeFromName("file/save/path");

위 2가지 방법에 기반하여 아래와 같이 유틸 메소드를 작성했습니다.

/**
 * 파일 Mime Type 탐지
 * @param filePath 파일 저장 경로
 * @return 파일 Mime Type
 */
public String detectFileMimeType(String filePath) {
  Path path = Paths.get(filePath);
  String detectedMimeType = null;
  try {
    detectedMimeType = Files.probeContentType(path);
  } catch (IOException e) {
    // ignore
  }
  return detectedMimeType != null ? detectedMimeType : URLConnection.guessContentTypeFromName(filePath);
}

상황에 맞춰 사용하면 될 것 같습니다.

반응형

'Back-End > Java' 카테고리의 다른 글

JUnit5 사용해보기  (0) 2020.02.01
Lombok 사용 중 constructor ... is already defined in class 오류 발생 해결  (0) 2018.12.08
자바 동일성, 동등성 차이  (0) 2018.11.24
Java NIO란  (0) 2018.10.02
Java Stream API 소개  (0) 2018.09.17