Exemplo n.º 1
0
  /**
   * ************************************************* URL: /rest/controller/upload upload():
   * receives files
   *
   * @param request : MultipartHttpServletRequest auto passed
   * @param response : HttpServletResponse auto passed
   * @return LinkedList<FileMeta> as json format **************************************************
   */
  @RequestMapping(value = "/upload", method = RequestMethod.POST)
  public @ResponseBody LinkedList<FileMeta> upload(
      MultipartHttpServletRequest request, HttpServletResponse response) {

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

    String basePath = "f:/var/lirantest";
    new File(basePath).mkdirs();

    // 2. get each file
    while (itr.hasNext()) {

      // 2.1 get next MultipartFile
      mpf = request.getFile(itr.next());
      System.out.println(mpf.getOriginalFilename() + " uploaded! " + files.size());

      // 2.2 if files > 10 remove the first from the list
      if (files.size() >= 10) files.pop();

      // 2.3 create new fileMeta
      fileMeta = new FileMeta();
      fileMeta.setFileName(mpf.getOriginalFilename());
      fileMeta.setFileSize(mpf.getSize() / 1024 + " Kb");
      fileMeta.setFileType(mpf.getContentType());

      try {
        fileMeta.setBytes(mpf.getBytes());

        // copy file to local disk (make sure the path
        // "e.g. D:/temp/files" exists)
        FileCopyUtils.copy(
            mpf.getBytes(), new FileOutputStream(basePath + "/" + mpf.getOriginalFilename()));

      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
      // 2.4 add to files
      files.add(fileMeta);
    }

    // result will be like this
    // [{"fileName":"app_engine-85x77.png","fileSize":"8 Kb","fileType":"image/png"},...]
    return files;
  }