반응형

Upload_01.vol1.egg

Upload_01.vol2.egg

Upload_01.vol3.egg

Upload_01.vol4.egg


이미지를 DB에 저장하고 DB에서 불러와 화면에 출력해주는 이미지 업로드 프로그램입니다.

 

소스는 분할하여 첨부파일로 올립니다.  

 

DB:

blob타입으로 이미지 파일을 DB에 저장한다.

 

CREATE TABLE Image_Upload (
num int(11) NOT NULL AUTO_INCREMENT,
title varchar(200),
description text ,
content mediumblob,
contentName varchar(200) ,
contentType varchar(255) ,
date timestamp DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (num)
);

 

컨트롤러 :

DB에 이미지를 저장하고 불러들여오는 부분


@RequestMapping(value = "/imageAdd.do", method = RequestMethod.POST)
 public String imageAdd(@ModelAttribute("board") @Valid UploadImageVO upload, BindingResult result, Model model, @RequestParam("file") MultipartFile file) throws IOException {
  logger.info("Add!! "+ new Date());
  
  inputStream = file.getInputStream();
  image = IOUtils.toByteArray(inputStream);
 
  upload.setContent(image);   
  upload.setContentName(file.getOriginalFilename());
  upload.setContentType(file.getContentType());
  
  iuploadImageService.uploadWrite(upload);
  
  return "redirect:/imageList.do";
 }
  
 @RequestMapping(value = "/imageShow/{num}.do", method = {RequestMethod.GET})
 public void imageShow(@PathVariable("num") String num, HttpServletResponse response) throws IOException, SerialException, SQLException {
  logger.info("Show!!"+ new Date());
  
  UploadImageVO board = iuploadImageService.uploadView(num);
  
  response.setHeader("Content-Disposition", "inline;filename=\"" + board.getContentName() + "\"");
  outputStream = response.getOutputStream();
  response.setContentType(board.getContentType());
        
        SerialBlob blob = new SerialBlob(board.getContent());

        IOUtils.copy(blob.getBinaryStream(), outputStream);
        
        outputStream.flush();
        outputStream.close();
 }

 

JSP:

이미지 주소를 서블렛으로 DB에서 이미지 파일을 불러와서 화면에 보여준다.

 

<img width="500" height="300" src="imageShow/${board.num}.do"/> 

리스트 화면:


글쓰기 화면:


뷰 화면:


수정화면:


반응형
Posted by ThinkPad War
,