UploadControllerA.java
페이지 정보
본문
package com.pkt.controller;
import java.io.File;
import java.util.UUID;
import javax.annotation.Resource;
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;
//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());
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;
}
}
- 이전글● 파일 업로드 - 일반 ( 경로지정 및 테스트 ) 24.08.01
- 다음글/uploadForm.jsp 24.08.01
댓글목록
등록된 댓글이 없습니다.