ArticleController.java
@GetMapping("/new")
public String neww(){
return "article/boardwrite";
}
boardwrite.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
.layout{
width: 500px;
margin: 0 auto;
margin-top: 40px;
}
.layout input{
width: 100%;
box-sizing: border-box;
}
.layout textarea {
width: 100%;
margin-top: 10px;
min-height: 300px;
}
</style>
<body>
<div class="layout">
<form action="/board/writepro" method="post" enctype="multipart/form-data">
제목: <input name="title" type="text"><br>
<textarea></textarea><br>
<input type="file" name="file"><br>
<button type="submit">업로드</button>
</form>
</div>
</body>
</html>
enctype="multipart/form-data"
<input type="file" name="file">
이 두개 추가해 줘야함
ArticleController.java
// 글 생성
@PostMapping("/board/writepro")
public String create(articleDTO articleDTO, MultipartFile file) throws Exception {
// 경로
String projectPath = System.getProperty("user.dir") + "\\ajaxEx\\src\\main\\resources\\static\\files";
// 랜덤 파일이름 + 원래 파일 이름
UUID uuid = UUID.randomUUID();
String fileName = uuid + "_" + file.getOriginalFilename();
// 경로에 파일 저장
File saveFile = new File(projectPath, fileName);
file.transferTo(saveFile);
articleDTO.setFilename(fileName);
articleDTO.setFilepath("/files/" + fileName);
article article = articleDTO.toEntity();
article save = articleRepository.save(article);
return "redirect:/articles";
}
articleDTO
@Data
@AllArgsConstructor
public class articleDTO {
private Long id;
private String title;
private Long getView;
private String context;
private String filename;
private String filepath;
public article toEntity() {
return new article(id,title, 0L,context,filename,filepath);
}
}
articleRepository
public interface articleRepository extends JpaRepository<article, Long> {
}
article
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class article {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column
private String title;
@Column
private Long getView;
private String context;
private String filename;
private String filepath;
}
실행결과


바로 이미지 못 봄

서버를 재시작해야지만 파일을 볼 수 있음 왜인지 모르겠다
'스프링 > 게시판 프로젝트' 카테고리의 다른 글
| 스프링부트 페이징처리 구현 연습 (1) | 2024.04.05 |
|---|---|
| 스프링부트 복합키 연습 (0) | 2024.04.05 |