我正在使用Apache Commons FileUpload Stream API,它与spring-boot-starter-parent 1.5.14.RELEASE完美配合:
public ResponseEntity<String> uploadFile(HttpServletRequest request) throws Exception
{
if (!ServletFileUpload.isMultipartContent(request))
{
return responseService.badRequest(request, "file", "Request is not multipart, please 'multipart/form-data' enctype for your form.");
}
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iter = upload.getItemIterator(request);
while (iter.hasNext())
{
FileItemStream item = iter.next();
if (!item.isFormField())
{
save(item.openStream(), item.getName());
return responseService.success(request);
}
}
return responseService.badRequest(request, "file", "Must contain a file stream");
}
我的属性文件中也设置了spring.http.multipart.enabled = false。
但是,当我升级到2.0.3.RELEASE时,FileItemIterator的hasNext()只返回false。
有没有人能够使用Spring 5 / Springboot 2.0.x?
答案 0 :(得分:1)
在您的 application.properties 文件集中:
spring.servlet.multipart.enabled=false
如果您尚未设置此项,则会发现它似乎立即关闭了流。
如果您遵循的是较早的演示,则可以将Spring Boot 1.x值设置为spring.http.multipart.enabled=false
。 Boot 2.0已弃用该功能
话虽这么说,现在是指出两个特定资源的好时机:
1。)Spring参考文档
Common Application Properties Spring 1.5.15
Common Application Properties Spring 2.0.X
这些文档显示了您可能不知道的通用应用程序属性之间的更改。利用IntelliJ之类的IDE,它会通过带有红色下划线的带有信息提示的花样来提示您(如果您恰巧利用了它)。
2。)Spring Boot迁移指南
签出Spring Boot 2.0 Migration Guide。
它会定期进行更新,并指出这些麻烦类型,例如用于迁移application.properties
的工具,默认值的更改(重要的)以及一些已更改的基础。
如果您要迁移应用程序,或者只是想了解更多有关应用程序的行为方式以及某些原因,我强烈建议您这样做。