UploadControllerA.java ( 썸네일 생성 추가 ) > SPRING1

본문 바로가기

사이트 내 전체검색

뒤로가기 SPRING1

UploadControllerA.java ( 썸네일 생성 추가 )

페이지 정보

작성자 관리자 작성일 24-08-01 10:37 조회 105 댓글 0

본문

package com.pkt.controller;


import java.awt.Graphics;

import java.awt.Image;

import java.awt.image.BufferedImage;

import java.io.File;

import java.util.UUID;


import javax.annotation.Resource;

import javax.imageio.ImageIO;


import org.springframework.stereotype.Controller;

import org.springframework.util.FileCopyUtils;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.multipart.MultipartFile;

import org.springframework.web.servlet.mvc.support.RedirectAttributes;


import lombok.extern.log4j.Log4j;


@Controller

@Log4j

public class UploadControllerA {


// 첨부파일 저장 경로 : servlet-context.xml에 있는 bean id="uploadPath" 경로 매칭

//@Resource(name = "uploadPath")

private String uploadPath = "C:\\spring2\\ex04\\src\\main\\webapp\\resources\\upload";



@GetMapping("/uploadForm")

public void uploadFormGet() {

log.info("uploadFormGet.....................");

}


//한글 파일 이름이 깨진다면 web.xml에 한글 처리용 필터를 적용

@PostMapping("/uploadForm")

public String uploadFormPost(MultipartFile file, RedirectAttributes rttr) throws Exception {

log.info("originalName: " + file.getOriginalFilename());

log.info("size: " + file.getSize()); //byte 단위

log.info("contentType: " + file.getContentType());


String savedName = uploadFile(file.getOriginalFilename(), file.getBytes());


//썸네일

String new_name = "thum_" + savedName; //썸네일 파일 이름


int w = 50; //사이즈 크기

int h = 50;

String imgFormat = "jpg"; //기본 설정 초기화


Image image = ImageIO.read(new File(uploadPath+"\\"+savedName)); //원본 이미지


if(image != null) { //이미지 파일이 아닌 경우 null

Image resizeImage = image.getScaledInstance(w,h,Image.SCALE_SMOOTH);


BufferedImage newImage = new BufferedImage(w,h,BufferedImage.TYPE_INT_BGR);


Graphics g = newImage.getGraphics();

g.drawImage(resizeImage, 0, 0, null);

g.dispose();


ImageIO.write(newImage, imgFormat, new File(uploadPath+"\\"+new_name)); //파일 올리기

}


rttr.addFlashAttribute("savedName",savedName);


return "redirect:/uploadForm";

}


// UUID 중복되지 않는 고유한 키 값을 설정할 때 사용

// uploadFile()은 원본 파일의 이름과 파일 데이터를 byte[]로 변환한 정보를 파라미터로 처리해서 실제로 파일 업로드한다.

private String uploadFile(String originalName, byte[] fileData) throws Exception {

UUID uid = UUID.randomUUID();

String savedName = uid.toString() + "_" + originalName;


// import java.io.File;

File target = new File(uploadPath, savedName);


// FileCopyUtils는 'org.springframework.util' 패키지에 설정된 클래스(실제 파일 처리)

FileCopyUtils.copy(fileData, target);


return savedName;

}


}

댓글목록 0

등록된 댓글이 없습니다.


Copyright © dancePKT. All rights reserved.
PC 버전으로 보기