Springboot + JPA + Summernote 예제 - 2

ImageController

package com.kyhslam.controller;

import com.kyhslam.domain.UploadFile;
import com.kyhslam.service.FileService;
import com.kyhslam.service.ImageService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.PrintWriter;
import java.time.LocalDateTime;
import java.util.UUID;

@RestController
@RequiredArgsConstructor
@Slf4j
public class ImageController {

    private final ImageService imageService;
    private final FileService fileService;


    @PostMapping("/image")
    public void handlerFileUpload(@RequestParam("file")MultipartFile file, HttpServletRequest request
                                , HttpServletResponse response) {

        try {
            //UploadFile uploadFile = imageService.store(file);

            //response.setContentType("text/html;charset=utf-8");
            PrintWriter out = response.getWriter();
            String realFolder = "D:\\image";
            UUID uuid = UUID.randomUUID();

            //업로드할 파일 이름
            String org_filename = file.getOriginalFilename();
            String str_filename = uuid.toString() + org_filename;

            log.info("org_filename ==== " + org_filename);
            log.info("str_filename ==== " + str_filename);

            String filePath = realFolder + "\\" + str_filename;

            UploadFile upload = new UploadFile();
            upload.setFilepath(filePath);
            upload.setRegDate(LocalDateTime.now());
            upload.setFilename(org_filename);
            upload.setSavedName(str_filename);

            fileService.save(upload);


            log.info("filePath ==== " + filePath);

            File f = new File(filePath);
            if(f.exists()) {
                f.mkdirs();
            }

            file.transferTo(f);
            out.close();
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}

ArticleController

package com.kyhslam.controller;

import com.kyhslam.domain.Article;
import com.kyhslam.service.ArticleService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;

import java.time.LocalDateTime;

@Controller
@Slf4j
@RequiredArgsConstructor
public class ArticleController {

    private final ArticleService articleService;

    @PostMapping("article/save")
    public String save(Article article) {
        article.setRegDate(LocalDateTime.now());
        log.info(" ------- save ------");
        log.info("article ==== "  +article);
        articleService.save(article);

        return "";
    }
}

ArticleRepository

package com.kyhslam.repository;

import com.kyhslam.domain.Article;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;

import javax.persistence.EntityManager;

@Repository
@RequiredArgsConstructor
public class ArticleRepository {

    private final EntityManager em;

    public void save(Article article) {
        em.persist(article);
    }
}

FileRepository

package com.kyhslam.repository;

import com.kyhslam.domain.UploadFile;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import javax.persistence.EntityManager;
import java.util.List;

@Repository
@RequiredArgsConstructor
public class FileRepository {

    private final EntityManager em;

    public UploadFile save(UploadFile uploadFile) {
        em.persist(uploadFile);
        return uploadFile;
    }

    public List<UploadFile> findAll() {
        return em.createQuery("select u from UploadFile u", UploadFile.class)
                .getResultList();
    }
}

ArticleService

package com.kyhslam.service;

import com.kyhslam.domain.Article;
import com.kyhslam.repository.ArticleRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class ArticleService {

    private final ArticleRepository articleRepository;

    @Transactional
    public void save(Article article) {
        articleRepository.save(article);
    }
}

FileService

package com.kyhslam.service;

import com.kyhslam.domain.UploadFile;
import com.kyhslam.repository.FileRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class FileService {

    private final FileRepository fileRepository;

    @Transactional
    public UploadFile save(UploadFile uploadFile) {
        fileRepository.save(uploadFile);
        return uploadFile;
    }

    public List<UploadFile> findAll() {
        return fileRepository.findAll();
    }
}

댓글

Designed by JB FACTORY