亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 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 關注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號