스프링/게시판 프로젝트

파일 생성 연습

까마귀! 2024. 3. 23. 23:20
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