MultipartFile -> 이미지 업로드에 핵심이다.
이미지 업로드 활용하는 DTO에 멤버변수로 MultipartFile 타입을 추가할 수 있다.
Spring 에서 지원해주고 있으며 pom.xml 의존주입은 아래와 같이 진행된다.
더보기
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
의존 주입을 완료했다면 스프링 컨테이너에 Bean 추가를 진행해주면된다.
<bean class="org.springframework.web.multipart.support.StandardServletMultipartResolver" id="multipartResolver" />
추가하게 되면 아래 예제 처럼 사용이 가능하며
MutipartFile 에서 주로? 사용하는 메서드는 아래와 같다.
getOrifinalFilename() : 받아온 파일의 파일 이름만 가져옵니다.
transferTo() : 입력한 주소에 받아온 파일을 복사?해서 저장합니다.
간단한 예제
update.jsp
더보기
<div class="container mt-5">
<div class="card">
<div class="card-body">
<h5 class="card-title">이미지 변경</h5>
<form action="updateImage.do" method="POST" enctype="multipart/form-data">
<input type="hidden" name="board_num" value="${data.board_num}">
<div class="mb-3">
<label for="file" class="form-label">이미지</label>
<input type="file" class="form-control" name="file" id="file" onchange="preview(event)">
</div>
<div class="mb-3">
<img id="previewImage" class="img-thumbnail" style="display:none; max-width: 100%; height: auto;" alt="미리보기 이미지">
</div>
<div class="d-grid">
<input type="submit" class="btn btn-primary" value="이미지 변경">
</div>
</form>
</div>
</div>
</div>
updateImage.do
더보기
@PostMapping("/updateImage.do")
public String updateImage(ImgDTO imgDTO) throws IOException {
log.info("imgDTO : [{}]",imgDTO);
MultipartFile file = imgDTO.getFile();
String filename = file.getOriginalFilename();
log.info("filename [{}]",filename);
file.transferTo(new File(path + filename));
imgDTO.setPath(filename);
if(imgService.insert(imgDTO)) {
log.error("이미지 등록 성공");
}
return "redirect:main.do";
}
ImgDTO.java
더보기
public class ImgDTO {
MultipartFile file;
private int imaged;
private String path;
private int board_num;
public int getImaged() {
return imaged;
}
public void setImaged(int imaged) {
this.imaged = imaged;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public int getBoard_num() {
return board_num;
}
public void setBoard_num(int board_num) {
this.board_num = board_num;
}
public MultipartFile getFile() {
return file;
}
public void setFile(MultipartFile file) {
this.file = file;
}
@Override
public String toString() {
return "ImgDTO{" +
"imaged=" + imaged +
", path='" + path + '\'' +
", board_num=" + board_num +
'}';
}
}
728x90
'국비 내용 정리 > Spring' 카테고리의 다른 글
[Spring] 국비 79일 내용 정리 (Mybatis) (2) | 2024.11.04 |
---|---|
국비 68일 내용정리 (템플릿 패턴) (0) | 2024.10.19 |
국비 67일 내용정리 (AOP @어노테이션) (0) | 2024.10.16 |
국비 66일 내용정리 (AOP) (1) | 2024.10.15 |
국비 65일 내용정리 (Spring 비동기) (0) | 2024.10.14 |