@RequestMapping(value = "delete/{database}/{num}")
  public String delete(@PathVariable("database") String database, @PathVariable("num") int num) {
    ImageBoardImp imageBoardImp = sqlSession.getMapper(ImageBoardImp.class);
    System.out.println("delete : " + database);

    try {
      ImageBoard imageBoard = new ImageBoard();
      imageBoard.setNum(num);
      imageBoard.setDatabase(database);

      imageBoardImp.deleteImageBoard(imageBoard);
      File file = new File(makeDirDatabaseNum(database, num).getAbsolutePath());

      File[] files = file.listFiles();
      files[0].delete();
      file.deleteOnExit();

      return "redirect:/ImageBoard/" + database + "/" + 1;
    } catch (Exception e) {
      return "fail";
    }
  }
  @RequestMapping(
      value = "{database}/insertBoard",
      method = {RequestMethod.POST, RequestMethod.GET})
  // @ModelAttribute @Valid Board board
  public String insertBoard(
      HttpServletResponse response,
      HttpServletRequest request,
      @ModelAttribute @Valid ImageBoard imageBoard,
      @PathVariable("database") String database) {

    ImageBoardImp imageBoardImp = sqlSession.getMapper(ImageBoardImp.class);

    String fileMetaDatabase = BoardList.getFileMetaTableName(database);

    System.out.println("inserBoard3 : database : " + database);
    System.out.println("inserBoard3 : fileMetaDatabase : " + fileMetaDatabase);

    imageBoard.setDatabase(database);

    // 1. build an iterator
    // Iterator<String> itr = multiRequest.getFileNames();
    // MultipartFile mpf = null;

    Logger logger = Logger.getLogger("ImageBoard");

    int highestNum = 0;
    File fileDir = null;
    List<MultipartFile> crunchifyFiles = imageBoard.getArrMultipartFile();
    List<String> fileNames = new ArrayList<String>();

    if (null != crunchifyFiles && crunchifyFiles.size() > 0) {
      for (MultipartFile multipartFile : crunchifyFiles) {
        String fileName = multipartFile.getOriginalFilename();
        System.out.println(fileName);

        try {
          highestNum = imageBoardImp.getImageBoardHighestNum(database);
          fileDir = makeDirDatabaseNum(database, highestNum);
        } catch (Exception e) {
          fileDir = makeDirDatabaseNum(database, 1);
        }

        System.out.println("highestNum : " + highestNum);

        if (!"".equalsIgnoreCase(fileName)) {
          try {
            multipartFile.transferTo(new File(fileDir, fileName));

            imageBoard.setFileName(multipartFile.getOriginalFilename());
            imageBoard.setFileSize(multipartFile.getSize() / 1024 + " Kb");
            imageBoard.setFileType(multipartFile.getContentType());
            imageBoard.setDatabase(database);

            System.out.println(
                "fileMeta.getFileName() : " + imageBoard.getFileName() + " Inserted");

            imageBoardImp.insertImageBoard(imageBoard);

          } catch (Exception e) {
            logger.severe(e.getMessage());
            System.out.println("Error");
          }
        }
      }
    }

    return "redirect:/ImageBoard/" + database + "/" + 1;
  }
  @RequestMapping(value = "/{database}/{pageNum}", method = RequestMethod.GET)
  @Transactional
  public String imageBoard(
      @PathVariable("database") String database,
      @PathVariable("pageNum") int pageNum,
      Model model) {
    ImageBoardImp imageBoardImp = sqlSession.getMapper(ImageBoardImp.class);
    ReplyImp replyImp = sqlSession.getMapper(ReplyImp.class);
    ArrayList<ImageBoard> arrImageBoard = new ArrayList<ImageBoard>();
    ArrayList<Reply> arrReply = new ArrayList<Reply>();
    ArrayList<String> arrImageStream = new ArrayList<String>();

    if (pageNum == 0) {
      pageNum = 1;
    }

    // DB에서 List 개수 파악
    int pageSize = 10; // 가지고 올 개수
    int count = 0;
    try {
      count = imageBoardImp.getImageBoardHighestNum(database);
    } catch (Exception e) {
      count = 0;
    }
    int start = (pageNum - 1) * pageSize;
    int maxPageNum = imageBoardImp.getImageBoardCount(database);
    if ((maxPageNum % MAX_PAGEZIE) > 0) {
      maxPageNum = maxPageNum / pageSize + 1;
    } else {
      maxPageNum = maxPageNum / pageSize;
    }

    System.out.println(start);
    System.out.println(start + pageSize);

    arrImageBoard = imageBoardImp.listImageBoardPaging(database, start, pageSize);
    arrReply = replyImp.getReplyByUpDown(BoardList.getReplyTableName(database), 100, 102);
    try {
      arrImageStream = encodingImage(arrImageBoard, database);
      System.out.println("encodingImage success");
    } catch (Exception e) {
      System.out.println("encodingImage error");
      e.printStackTrace();
    }

    Iterator<ImageBoard> iterator = arrImageBoard.iterator();
    int count_1 = 0;
    while (iterator.hasNext()) {
      iterator.next().setBase64Encoded(arrImageStream.get(count_1++));
    }

    System.out.println("size : " + arrImageBoard.size());
    System.out.println(arrImageBoard.get(0).getUsername());
    System.out.println(arrImageBoard.get(0).getContent());

    model.addAttribute("maxPageNum", maxPageNum);
    model.addAttribute("pageNum", pageNum);
    model.addAttribute("database", database);
    // model.addAttribute("arrImageStream", arrImageStream);
    model.addAttribute("arrImageBoard", arrImageBoard);
    model.addAttribute("arrReply", arrReply);

    return "imageboard/imageGallery";
  }