날아라쩡글이의 블로그입니다.
사진입력방법 본문
@PostMapping("/insert.do")
public String save(BookInsertForm form) throws IOException {
String saveDirectory = "C:\\spring-workspace\\spring-mybatis\\src\\main\\webapp\\resources\\images";
logger.debug("입력 폼 정보 :" + form);
List<BookPicture> bookPictures = new ArrayList<BookPicture>();
List<MultipartFile> upfiles = form.getUpfiles();//파일을 가져온다.
//업로드된 첨부파일을 지정된 폴더에 저장하고, BookPicture객체를 생성해서 파일명을 저장하고, 생성된 BookPicture객체를 List객체에 저장한다.
/*
* MultipartFile
* - 첨부파일 업로드를 지원하는 객체다.
* - 첨부파일 선택 필드 하나 당 MutipartFile객체가 하나씩 생성된다.
* - 폼의 첨부 파일 선택 필드에서 첨부파일을 선택하지 않아도, 해당 필드에 대한 MultipartFile객체는 생성된다.
* - MultipartFile의 주요 API
* + boolean isEmpty()
* MultipartFile객체에 첨부파일이 포함되어 있지 않으면 true를 반환한다.
* + String getOriginalFilename()
* 업로드 된 첨부파일의 파일명을 반환한다.
* + String getContentType()
* 업로드 된 첨부파일의 컨텐츠 타입을 반환한다. (text/plain, text/html, img/png 등)
* + long getSize()
* 업로드 된 첨부파일의 파일사이즈를 반환한다.
* + InputStream getInputStream()
* 업로드 된 첨부파일은 temp 폴더에 임시파일로 저장되는데, 그 임시파일의 내용을 읽어오는 스트림을 반환한다.
* + byte[] getBytes()
* 업로드 된 첨부파일의 실제 데이터를 byte배열을 담아서 반환한다.
*
*/
for(MultipartFile multipartFile : upfiles) {
if(!multipartFile.isEmpty()) { //파일이 들어가지 않은 것이 걸려진다. 파일이 비어있지 않으면!!!!
//MultipartFile의 isEmpty()메소드는 해당 객체에 첨부파일 정보가 없으면 true를 반환한다.
//MultipartFile객체에서 업로드된 첨부파일의 이름을 조회한다. System.currentTimeMillis() 13자리 : 유닉스시간으로 현재시간정보를 가져온다.ㄴ
String filename = System.currentTimeMillis() + System.currentTimeMillis() + multipartFile.getOriginalFilename();
//책의 사진정보를 저장하는 BookPicture객체를 생성하고, 첨부파일 이름을 저장한다.
BookPicture bookPicture = new BookPicture();
bookPicture.setPicture(filename);
//생성된 BookPicture 객체를 List객체에 저장한다.
bookPictures.add(bookPicture);
//업로드된 첨부파일을 프로젝트내의 images 폴더에 저장하기
//MultipartFile객체는 임시디렉토리에 임시파일상태로 저장된 첨부파일을 읽어오는 스트림을 제공한다.
InputStream in = multipartFile.getInputStream(); //읽어오는 스트림
// 지정된 폴더에 첨부파일명으로 파일을 출력하는 스트림 생성하기
FileOutputStream out = new FileOutputStream(new File(saveDirectory, filename)); //출력하는 스트림
//스프링의 있는 객체로 저장한다. 저장하는 스트림이다.
//Spring에서 제공하는 FileCopyUtils.copy(InputStream in, OutputStream out)를 메소드를 사용해서
//temp폴더에 임시파일로 저장되어 있는 첨부파일을 읽어서 scr/main/resources/images 폴더로 복사한다.
FileCopyUtils.copy(in, out);
}
}
Book book = new Book();
// BookInsertFrom객체의 멤버변수에 저장된 값을 Book객체의 멤버변수에 복사한다.
// 멤버변수의 타입과 멤버변수의 이름이 일치하는 값이 복사되며, 이름은 같은데 타입이 서로 다르면 예외가 발생한다.
BeanUtils.copyProperties(form, book);
//폼에 있는 모든 프라퍼티의 값을 전부 복사하고 보낸준다.
///책정보와 책사진저옵를 서비스 메소드에 전달해서 저장시킨다.
bookService.addNewBook(book, bookPictures);
return "redirect:list.do";
'중앙 HTA (2106기) story > spring java framwork story' 카테고리의 다른 글
카카오 페이 데모결제시 (0) | 2022.02.11 |
---|---|
front-end와 back-end rest API연결 (0) | 2022.02.04 |
@EnableScheduling 스프링 스케쥴러 (2) | 2022.02.03 |
카카오 javascript로 로그인하기 (0) | 2022.01.21 |
리엑트 , 앵귤러, 뷰.js의 차이점 (0) | 2022.01.20 |