前提・実現したいこと
Springの勉強を始めたJava初心者です。
画像のファイルパスをデータベースに、画像ファイルをフォルダに格納したいです。
よろしくお願いいたします。
発生している問題・エラーメッセージ
画像のファイルパスをデータベースに、画像ファイルをフォルダに格納するためのコードを実装して実行したところ、nullPointerExceptionが投げられた。
そのため、まずはFormに欲しい値が入っているか確認するために、form.getMultipartFile()をSystem.out.printlnしたが、ここでnullが表示された。
→そもそもformに値が入っていないことが分かりました。
該当のソースコード
Controller
@PostMapping("upload") public String upload(UploadForm uploadForm) { System.out.println(uploadForm.getMultipartFile()); System.out.println(uploadForm.getStr()); return "ramen/register"; }
html
<form method="post" action="#" th:action="@{/ramen/upload}" enctype="multipart/form-data" th:object="${uploadForm}"> <div class="form-group"> <label for="file">File:</label> <input type="file" th:field="*{multipartFile}" id="file" class="form-control-file"> </div> <div class="form-group"> <label for="str">str</label> <input type="text" name="str" class="form-control" id="" /> </div> <div align="center"> <button type="submit" class="btn btn-primary">FILE UPLOAD</button><br><br> </div> </form>
UploadForm
package com.example.demo.app.ramen; import java.io.Serializable; import org.springframework.web.multipart.MultipartFile; public class UploadForm implements Serializable { private MultipartFile multipartFile; private String str; public MultipartFile getMultipartFile() { return multipartFile; } public void setMultipartFile(MultipartFile multipartFile) { this.multipartFile = multipartFile; } public String getStr() { return str; } public void setStr(String str) { this.str = str; } }
yml
spring: servlet: multipart: max-file-size: 1MB max-request-size: 10MB
試したこと
画像ファイルを利用するための設定やformの使い方など見直しました。具体的にしたことは次の2つです。
①FormのmultipartFileがnullで返ってくるため、そもそもFormの使い方が悪いのかと思い、String型のstrという変数に値を入れてSystem.out.printlnするとstrの値は返ってくることを確認した。
②multipartFileを利用するにはymlに設定が必要という記事を発見したため、その通りに記載した。
補足情報(FW/ツールのバージョンなど)
Java 11
Gradle 3
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/07/12 02:37