게시판12) MIME 타입
in Web Dev on Java Spring
- MIME 타입을 공부해서 아래와 같이 이미지 미리보기 기능을 넣을 수 있다.
MIME이란?
- MIME은 클라이언트에게 전송된 문서의 타입을 알려준다.
타입 | 설명 | 일반적인 서브타입 예시 |
---|---|---|
text | 텍스트를 포함하는 모든 문서를 나타내며 이론상으로는 인간이 읽을 수 있어야 합니다 | text/plain , text/html , text/css, text/javascript |
image | 모든 종류의 이미지를 나타냅니다. (animated gif처럼) 애니메이션되는 이미지가 이미지 타입에 포함되긴 하지만, 비디오는 포함되지 않습니다. | image/gif , image/png , image/jpeg , image/bmp , image/webp |
audio | 모든 종류의 오디오 파일들을 나타냅니다. | audio/midi , audio/mpeg, audio/webm, audio/ogg, audio/wav |
video | 모든 종류의 비디오 파일들을 나타냅니다. | video/webm , video/ogg |
application | 모든 종류의 이진 데이터를 나타냅니다. | application/octet-stream , application/pkcs12 , application/vnd.mspowerpoint , application/xhtml+xml , application/xml , application/pdf |
출처 : https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types
첨부 파일 이미지 미리보기 보여주기
- 여기서 MIME 타입이 image라면 미리보기를 보여줄 것이다.
- Files.probeContentType(Paths.get(fullpath));를 이용해 첨부파일의 mime 타입을 알아내고
- mime 타입에 image라는 단어가 들어가면 mime을 모델에 저장해 jsp에서 접근할 수 있게 해준다.
@RequestMapping("/boarddetail")
public String boardDetail(int boardseq, Model model) {
//db 접속해야됨.
Board board = repository.boardDetail(boardseq);
String mime = null;
if(board.getSavedfile()!=null) {
String fullpath = uploadPath +"/" + board.getSavedfile();
try {
mime = Files.probeContentType(Paths.get(fullpath));
} catch (IOException e) {
e.printStackTrace();
}
if(mime.contains("image")){
model.addAttribute("mime",mime);
}
System.out.println("MIME type :" + mime);
}
mime 이 null 이 아니면 image 타입이다.
다음과 같은 코드를 사용하면 img를 미리 보여줄 수 있다.
<img src ="download?boardseq=${board.boardseq}" style = "height: 50px;">
첨부파일 부분 코드
<tr> <th>첨부파일</th> <td><a href= "download?boardseq=${board.boardseq}" }>${board.originalfile}</a> <c:if test = "${not empty mime }"> <br> <img src ="download?boardseq=${board.boardseq}" style = "height: 50px;"> </c:if> </td> </tr>
◇ Spring 게시판 포스팅 시리즈 ◇