Java 从rest参数创建目录

Java 从rest参数创建目录,java,Java,我想在一个主根目录下创建目录。我尝试了以下代码: private static String UPLOADED_FOLDER = "/opt/"; @PostMapping public ResponseEntity<StringResponseDTO> uploadData(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes, @RequestParam("id") Int

我想在一个主根目录下创建目录。我尝试了以下代码:

private static String UPLOADED_FOLDER = "/opt/";

@PostMapping
public ResponseEntity<StringResponseDTO> uploadData(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes, @RequestParam("id") Integer merchant_id) throws Exception {    
    InputStream inputStream = file.getInputStream();
    String originalName = file.getOriginalFilename();
    String name = file.getName();
    String contentType = file.getContentType();
    long size = file.getSize();
    LOG.info("name: " + name);
    LOG.info("contentType: " + contentType);
    LOG.info("size: " + size);

    try {
        byte[] bytes = file.getBytes();           
        File newFile = new File(UPLOADED_FOLDER + merchant_id, file.getOriginalFilename());
        LOG.info("New file location: " + newFile.getAbsolutePath()); //Log the path
        Files.write(newFile.toPath(), bytes);

    } catch (IOException e) {
        e.printStackTrace();
    }

    return ResponseEntity.ok(new StringResponseDTO(originalName));
}

我是否需要将编号
商户id
转换为字符串?

我认为会引发异常,因为目录
/opt/13
不存在<代码>文件。写入将创建文件,但不创建父目录。以下是
文件的一部分。编写
文档:

options参数指定如何创建或打开文件。如果不存在任何选项,则此方法的工作方式与存在CREATE、TRUNCATE_EXISTING和WRITE选项一样。换句话说,它打开文件进行写入,如果文件不存在,则创建该文件,或者最初将现有的常规文件截断为0大小

更换以下线路

File newFile = new File(UPLOADED_FOLDER + merchant_id, file.getOriginalFilename());
LOG.info("New file location: " + newFile.getAbsolutePath()); //Log the path
Files.write(newFile.toPath(), bytes);


我在14.58.59.png获得java.nio.file.FileSystemException:/opt/10/Screenshot 2019-08-01:是一个目录如果我发送相同的id参数会发生什么?它将覆盖内容?mkdirs()只会创建不存在的目录,而不会触及已存在的文件夹。所以你已经储存的内容是安全的。最后一个任务。你能告诉我如何在春季重新制作收到的文件吗?我是否理解正确,你想让用户从/opt下载他们的文件?您应该检查或创建新问题。
File newFile = new File(UPLOADED_FOLDER + merchant_id, file.getOriginalFilename());
LOG.info("New file location: " + newFile.getAbsolutePath()); //Log the path
Files.write(newFile.toPath(), bytes);
File directory = new File(UPLOADED_FOLDER, merchant_id.toString());
directory.mkdirs();
File newFile = new File(directory, file.getOriginalFilename());
LOG.info("New file location: " + newFile.getAbsolutePath()); //Log the path
Files.write(newFile.toPath(), bytes);