为了账号安全,请及时绑定邮箱和手机立即绑定

从 rest 参数创建目录

从 rest 参数创建目录

小唯快跑啊 2023-06-04 17:14:38
我想在一个主根目录下创建目录。我试过这段代码:private static String UPLOADED_FOLDER = "/opt/";@PostMappingpublic 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));}但我得到例外:2019-08-12 09:53:30,748 INFO  [stdout] (default task-79) 09:53:30.747 [default task-79] INFO  o.d.a.b.restapi.MerchantController - New file location: /opt/13/Screenshot 2019-08-01 at 14.58.59.png2019-08-12 09:53:30,749 ERROR [stderr] (default task-79) java.nio.file.NoSuchFileException: /opt/13/Screenshot 2019-08-01 at 14.58.59.png2019-08-12 09:53:30,750 ERROR [stderr] (default task-79)    at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)我需要将数字转换merchant_id成字符串吗?
查看完整描述

1 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

我认为抛出异常是因为目录/opt/13不存在。Files.write将创建文件,但没有父目录。这是Files.write文档的一部分:


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);


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);


查看完整回答
反对 回复 2023-06-04
  • 1 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信