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
등록된 댓글이 없습니다.