반응형

upload2.vol1.egg

upload2.vol2.egg

upload2.vol3.egg

upload2.vol4.egg


C://Temp 폴더에 이미지를 업로드 하고 보여주는 소스 입니다.

전체 소스파일은 압축하여 첨부했습니다.

 

[controller]

package co.kr.controller;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletResponse;
import javax.sql.rowset.serial.SerialBlob;
import javax.sql.rowset.serial.SerialException;
import javax.validation.Valid;

import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import co.kr.service.IUploadImageService;
import co.kr.vo.UploadImageVO;

@Controller
public class UploadmageController {
 private static final Logger logger = LoggerFactory.getLogger(UploadmageController.class);

 @Autowired
 private IUploadImageService iuploadImageService;

 @Autowired 
 private FileSystemResource filesystem;
 
 private InputStream inputStream;
 private OutputStream outputStream;
 private byte[] image;
 
 @RequestMapping(value = "/imageList.do", method = {RequestMethod.GET})
 public String imageList(UploadImageVO upload, Model model) {
  logger.info("List!! "+ new Date());

  List<UploadImageVO> board = iuploadImageService.uploadList((upload.getRecord()-1) * upload.getBlock(), upload.getBlock());
  
  int totalcount = iuploadImageService.uploadBlock();
  int totalrecord = (int) Math.ceil(totalcount * 1.0 / upload.getBlock());
   
  model.addAttribute("board", board);
  model.addAttribute("currentpage", upload.getRecord());
  model.addAttribute("totalrecord", totalrecord);
  model.addAttribute("upload", upload);
  
  return "list";   
 }

 @RequestMapping(value = "/imageWrite.do", method = {RequestMethod.GET})
 public String imageWrite(UploadImageVO upload, Model model) {
  logger.info("Write!!"+ new Date());

  model.addAttribute("board", upload);
  
  return "write";
 }
 
 @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();
  outputStream = new FileOutputStream(filesystem.getPath() + file.getOriginalFilename());

  image = IOUtils.toByteArray(inputStream);
  
  outputStream.write(image);
  outputStream.close();
  inputStream.close();
 
//  upload.setContent(image);
  upload.setContentName(file.getOriginalFilename());
  upload.setContentType(file.getContentType());
  
  iuploadImageService.uploadWrite(upload);
  
  return "redirect:/imageList.do";
 }
 
 @RequestMapping(value = "/imageView.do", method = {RequestMethod.GET})
 public String imageView(UploadImageVO upload, Model model) {
  logger.info("View!!"+ new Date());
  
  UploadImageVO board = iuploadImageService.uploadView(upload.getNum());
  
  model.addAttribute("board", board);
  
  return "view";
 }
 
 @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();
 }
 
 @RequestMapping(value = "/imageEdit.do", method = {RequestMethod.GET, RequestMethod.POST})
 public String imageEdit(UploadImageVO upload, Model model) {
  logger.info("Edit!!"+ new Date());
  
  UploadImageVO board = iuploadImageService.uploadView(upload.getNum());
  model.addAttribute("board", board);
  
  return "update";
 }
 
 @RequestMapping(value = "/imageUpdate.do", method = {RequestMethod.POST})
 public String imageUpdate(UploadImageVO upload, BindingResult result, @RequestParam("file") MultipartFile file) throws IOException {
  logger.info("Update!!"+ new Date());
  
  inputStream = file.getInputStream();
  image = IOUtils.toByteArray(inputStream);
 
//  upload.setContent(image);   
  upload.setContentName(file.getOriginalFilename());
  upload.setContentType(file.getContentType());
  
  iuploadImageService.uploadUpdate(upload);
  
  return "redirect:/imageList.do";
 }
 
 @RequestMapping(value = "/imageDelete.do", method = {RequestMethod.GET, RequestMethod.POST})
 public String imageDelete(UploadImageVO upload, Model model) {
  logger.info("Delete!!"+ new Date());
  
  iuploadImageService.uploadDelete(upload.getNum());

  return "redirect:/imageList.do";
 }
}

반응형
Posted by ThinkPad War
,