Java文件不存在异常



我尝试从web上传文件,文件存储在文件系统中。

@RequestMapping(value = "/upload", method = RequestMethod.POST)
public @ResponseBody String handleFileUpload(
        @RequestParam("name") String name,
        @RequestParam("file") MultipartFile file) {
    if (!file.isEmpty()) {
        try {
            byte[] bytes = file.getBytes();
            File file1 = new File(name + ".upload");
            BufferedOutputStream stream = new BufferedOutputStream(
                    new FileOutputStream(file1));
            stream.write(bytes);
            stream.close();
            return "You successfully uploaded " + name + " into " + name
                    + "-uploaded !";
        } catch (Exception e) {
            e.printStackTrace();
            return "You failed to upload " + name + " => " + e.getMessage();
        }
    } else {
        return "You failed to upload " + name
                + " because the file was empty.";
    }
}

上面的代码工作良好。但是当我尝试使用绝对目录时,它失败了,像

这样的代码
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public @ResponseBody String handleFileUpload(
        @RequestParam("name") String name,
        @RequestParam("file") MultipartFile file) {
    if (!file.isEmpty()) {
        try {
            byte[] bytes = file.getBytes();
            File file1 = new File("c:/" + name + ".uploaded");
            file1.getParentFile().mkdirs();
            BufferedOutputStream stream = new BufferedOutputStream(
                    new FileOutputStream(file1));
            stream.write(bytes);
            stream.close();
            return "You successfully uploaded " + name + " into " + name
                    + "-uploaded !";
        } catch (Exception e) {
            e.printStackTrace();
            return "You failed to upload " + name + " => " + e.getMessage();
        }
    } else {
        return "You failed to upload " + name
                + " because the file was empty.";
    }
}

抛出file not exists异常,而我已经创建了dirs。有人知道原因吗?谢谢!

将代码块更改为以下

  @RequestMapping(value = "/upload", method = RequestMethod.POST)
  public @ResponseBody String handleFileUpload(
          @RequestParam("name") String name,
          @RequestParam("file") MultipartFile file) {
            String yourUploadDirectory = "uploads";

      if (!file.isEmpty()) {
          try {
              byte[] bytes = file.getBytes();
              File file1 = new File("c:/" + yourUploadDirectory + "/" + name + ".uploaded");
              // You must write this line so that the designated file is first created, otherwise getParentFile() will throw error.
              file1.createNewFile();
              file1.getParentFile().mkdirs();
              BufferedOutputStream stream = new BufferedOutputStream(
                      new FileOutputStream(file1));
              stream.write(bytes);
              stream.close();
              return "You successfully uploaded " + name + " into " + name
                      + "-uploaded !";
          } catch (Exception e) {
              e.printStackTrace();
              return "You failed to upload " + name + " => " + e.getMessage();
          }
      } else {
          return "You failed to upload " + name
                  + " because the file was empty.";
      }
  }

有一个专门的文件夹用于上传总是好的

最新更新