【发布时间】:2018-08-20 10:41:09
【问题描述】:
我使用 Spring Initializr 创建了一个 Spring Boot 2 演示应用程序,并在下面添加了控制器:
@Controller
@RequestMapping("/demo")
public class UploadController {
private final static Logger LOG = LoggerFactory.getLogger(UploadController.class);
@PostMapping("/upload")
public ResponseEntity<String> uploadFile(
@RequestParam("metadata") MultipartFile metadata,
@RequestParam("payload") MultipartFile payload) throws IOException {
ObjectMapper mapper = new ObjectMapper();
Map metadataMap = mapper.readValue(metadata.getInputStream(), Map.class);
LOG.info("Received call to upload file {}", metadataMap.get("filename"));
LOG.info("File size: {}", payload.getBytes().length);
LOG.info("File {} successfully uploaded", metadataMap.get("filename"));
return ResponseEntity.ok().build();
}
}
然后我添加了一个包含此配置的 application.yaml 文件:
spring:
servlet:
multipart:
max-file-size: 2000000MB
max-request-size: 2000000MB
resolve-lazily: true
我的目标是让控制器在开始读取 payload 文件之前解析并记录 metadata 文件,但 Boot 似乎忽略了 resolve-lazily 设置:控制器内的代码不会执行直到读取整个正文。
我使用下面的命令来测试控制器:
curl -F metadata=@metadata.json -F payload=@payload.bin http://localhost:8080/demo/upload
我的代码/配置有什么问题吗?我理解设置的含义了吗?
【问题讨论】:
标签: spring-boot multipartform-data