前提・実現したいこと
SpringBootを用いて、Rest原則で画像をアップロードするAPIを実装中です。
Multipartfileや、Outputstreamなどの理屈を調べながら実装しているのですが
繰り返しやっても以下のエラーメッセージが表示されてしまいます。。
発生している問題・エラーメッセージ
java.nio.file.FileSystemException: src/main/images: Is a directory
該当のソースコード
Controller
@RequestMapping("/{id}/images") @PatchMapping(path = "{id}") public Product image( @PathVariable Long id, @RequestParam(name = "productImage") MultipartFile imageFile) { return productService.uploadImage(id, imageFile); }
Service
Java
1 public Product uploadImage(Long id, MultipartFile imageFile) { 2 3 String contentType = imageFile.getContentType(); 4 String imageFileName = UUID.randomUUID().toString() + contentType; 5 Path uploadfile = Paths.get("src/main/images"); 6 if (!Files.exists(uploadfile)) { 7 try { 8 Files.createDirectory(uploadfile); 9 } catch (Exception e) { 10 throw new RuntimeException(e); 11 } 12 } 13 try (OutputStream os = Files.newOutputStream(uploadfile, StandardOpenOption.CREATE)) { 14 byte[] bytes = imageFile.getBytes(); 15 os.write(bytes); 16 } catch (IOException e) { 17 throw new RuntimeException(e); 18 } 19 Product product = findById(id); 20 product.setImage_path(imageFileName); 21 return save(product); 22 }
試したこと
FileSystemExceptionの例外が出ているので、ファイル構造やディレクトリに関するエラーということで
保存先として指定しているディレクトリが存在していないのでは。。
と考え、path名を変えたり、予めディレクトリを作成してみたのですが、うまくいきません。。
補足情報(FW/ツールのバージョンなど)
アップロードした画像を格納させたいディレクトリは
src/mainの直下に"images"という名前で配置しております
json形式でデータを送受信するAPIを作成しているので
画像データは別に、PATCHで変更するような仕様となっております
htmlからformタグなどでデータを送信するのではなく、
insomniaを使用して仮想的にデータを飛ばしています!
API作成が初めてなので、未知な部分が多いですが、
何か原因がございましたら、ご教授頂ければ幸いです。。
何卒よろしくお願い致します
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/16 04:14