bogus1226 / BogusPlus

보거스플러스 프로젝트
0 stars 0 forks source link

게시물 기능 #7

Open bogus1226 opened 1 year ago

bogus1226 commented 1 year ago
bogus1226 commented 1 year ago

게시물올리기 기능 제이쿼리

$("#saveBtn").on("click", function(){
    let userId = $(this).data("userid");
    let content = $("#contentArea").val();
    let file = $("#fileInput")[0];
    let cafeId = $(this).data("cafeid");

    if(content.trim() == "") {
        $("#contentText").removeClass("d-none");
        return;
    }

    content = content.replace("\n", "<br>");

    var formData = new FormData();
    formData.append("userId", userId);
    formData.append("content", content);
    formData.append("file", file.files[0]);
    formData.append("cafeId", cafeId);

    $.ajax({
        type:"post"
        , url:"/suda/cafe/post/create"
        , data:formData
        , enctype:"multipart/form-data" 
        , processData:false 
        , contentType:false 
        , success:function(data){
            if(data.result == "success") {
                location.href = "/suda/cafe/mainpage/view?cafeId=" + cafeId;
            } else {
                alert("글쓰기 실패");
            }   
        }
        , error:function(){
            alert("글쓰기 에러");
        }

    });

});
bogus1226 commented 1 year ago

우선 내가 지정한 폴더안에 파일이름을 겹치지 않게 저장하기위해 userId와 시간으로 계산하여 만들어진 폴더가 생성되고, 그안에 이미지가 저장이된다!

public static final String FILE_UPLOAD_PATH = "C:\\Users\\user\\Desktop\\programing\\bogudPlus\\upload\\sudaPostImages";

private static Logger logger = LoggerFactory.getLogger(FileManagerService.class);

public static String saveFile(int userId, MultipartFile file) {

    if(file == null) {
        return null;
    }

    String directoryName = "/" + userId + "_" + System.currentTimeMillis() + "/";

    String directoryPath = FILE_UPLOAD_PATH + directoryName;
    File directory = new File(directoryPath);
    if(!directory.mkdir()) {

        logger.error("saveFile : 디렉토리 생성 실패 " + directoryPath);
        return null;
    }

    try {
        byte[] bytes = file.getBytes();

        String filePath = directoryPath + file.getOriginalFilename();

        Path path = Paths.get(filePath);

        Files.write(path, bytes);

    } catch (IOException e) {

        logger.error("saveFile : 파일 저장 실패 " + directoryPath);
        e.printStackTrace();

        return null;
    }

    return "/sudaPostImages" + directoryName + file.getOriginalFilename();
}
bogus1226 commented 1 year ago

이미지 접근을위한 코드

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {

    registry.addResourceHandler("/sudaPostImages/**")
    .addResourceLocations("file:///" + FileManagerService.FILE_UPLOAD_PATH + "/");
}
bogus1226 commented 1 year ago
[염근효]
- 게시물 올리기 할때 옆에 미리보기 화면구성 완료!
- 미리보기에서 이미지 기능 구현 완료!
- 이미지 삭제 기능 구현완료!
- 텍스트에따라 보이는 미리보기에서 한글로는 페이지가 넘어가는데 영어로는 넘아기지않는 버그발견!!
- 다음에 해야될것: 텍스트 버그 해결하기!