Spring BootでファイルアップロードをするにはMultipartFileインターフェースを受け取るようにするといいみたいです。
こんなクラスを定義して
package okazuki.fileupload.simple.controllers; import org.springframework.web.multipart.MultipartFile; public class FileUploadForm { private MultipartFile fileData; public MultipartFile getFileData() { return fileData; } public void setFileData(MultipartFile fileData) { this.fileData = fileData; } }
こんなHTMLでもって
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"/> <title>Insert title here</title> </head> <body> <form method="post" enctype="multipart/form-data" th:action="@{/upload}"> <input name="fileData" type="file" /> <input type="submit" /> </form> </body> </html>
こんなコントローラーで受けれます。
package okazuki.fileupload.simple.controllers; import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class HomeController { private static final Logger log = Logger.getLogger(HomeController.class); @RequestMapping public String index() { return "index"; } @RequestMapping(value = "/upload", method = RequestMethod.POST) public String upload(FileUploadForm fileUploadForm) { log.info(fileUploadForm.getFileData().getName() + ", " + fileUploadForm.getFileData().getSize()); return "index"; } }
MultipartFileインターフェースは、getBytesメソッドやgetInputStreamメソッドなどももってるので、お好みの方法でファイルのデータを扱うことができます。
リクエストのサイズとか
でかいファイルをアップできるようにするにはapplication.propertiesで以下の2つのパラメータを調整する必要があるみたいです。
multipart.max-file-size=1MB multipart.max-request-size=1MB