##わからないこと
画面上でアップロードしたファイルをjava側で/resources/static/img/userフォルダに格納したのですが、その相対パスの仕方がわかりません。初歩的な質問になってしまうのですが、わかる方いらっしゃいましたら教えていただけますと助かります。
###エラー
java.io.FileNotFoundException: src/main/resources/static/img/user/XXX.jpg (No such file or directory)
####処理の流れ
- 画面でファイルが選択されたらAjaxでサーバーサイドにファイルを送る
html
1<label id="file-btn" for="userImg" class="bg-primary text-white">Choose your photo</label> 2<input type="file" name="file" id="userImg" style="display: none;"> 3<p id="selected-status" class="mt-1">[Not yet selcted]</p>
- コントローラで渡ってきたファイルを受け取る
java
1// @Controller 2 public boolean imgRegister(@RequestParam("file") MultipartFile file) { 3 boolean bool = false; 4 try { 5 userService.saveUserImg(file); 6 bool = true; 7 } catch (Exception e) { 8 e.printStackTrace(); 9 } 10 return bool; 11 }
- サービスで/resources/static/img/userフォルダに画像を格納する
java
1// @userService 2public void saveUserImg(MultipartFile file) throws Exception { 3 String folder = "/Users/XXXXX/XXXXX/XXXXX/src/main/resources/static/img/user/"; //絶対パス指定では想定通りに格納できたが、相対パスではできない 4 byte[] bytes = file.getBytes(); 5 FileOutputStream output = new FileOutputStream(folder + file.getOriginalFilename()); 6 output.write(bytes); 7 output.close(); 8 Path path = Paths.get(folder + file.getOriginalFilename()); 9 Files.write(path, bytes); 10 }
#####試したこと
- 相対パスとして、「../../../../resources/static/img/user/」を上記の絶対パスの代わりに指定
階層は以下の通りです
UserService: /src/main/java/com/example/protfolio/service/UserService.java
あなたの回答
tips
プレビュー