Spring BootでファイルアップロードをするにはMultipartFileインターフェースを受け取るようにするといいみたいです。
こんなクラスを定義して
package okazuki.fileupload.simple.controllers; import org.springframework.web.multipart.MultipartFile; publicclass FileUploadForm { private MultipartFile fileData; public MultipartFile getFileData() { return fileData; } publicvoid setFileData(MultipartFile fileData) { this.fileData = fileData; } }
こんなHTMLでもって
<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head><metacharset="UTF-8"/><title>Insert title here</title></head><body><formmethod="post"enctype="multipart/form-data" th:action="@{/upload}"><inputname="fileData"type="file" /><inputtype="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; @Controllerpublicclass HomeController { privatestaticfinal Logger log = Logger.getLogger(HomeController.class); @RequestMappingpublic 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