我使用Spring MVC作为休息控制器,我使用Springfox将Swagger-ui与我的控制器集成在一起。我想要一个能够通过Swagger-ui接口上传文件的方法。我只需要两个参数,一个长对象id和要上传的文件。
@RestController
public class controller{
@RequestMapping(value="/upload", method=RequestMethod.POST)
public void uploadFile(@RequestParam Long id,
@RequestParam MultipartFile file){
//do some stuff
}
}
我已经尝试了几乎所有内容,但我无法显示文件上传按钮。但是,如果我这样做:
@RestController
public class Controller{
@RequestMapping(value="/upload", method=RequestMethod.POST)
public void uploadFile(@RequestParam Long id,
@RequestPart File file){
//do some stuff
}
}
出现文件上载按钮,但在尝试上载文件时始终会抛出http代码415。此外,我需要输入为MultipartFile,而不是常规文件。即使我将@RequestPart注释与Multipart文件一起使用,也不会出现选择要上载的文件按钮。我怎样才能让它工作?甚至:
@RestController
public class Controller{
@RequestMapping(value="/upload", method=RequestMethod.POST)
public void uploadFile(@RequestPart String metaData,
@RequestPart MultipartFile file){
//do some stuff
}
}
不行。如果有人可以演示如何让这个按钮出现在MultipartFile中?我永远感激不尽。
在我的情况下,我需要做两件事
@RequestParam("file") MultipartFile file
@Bean(name = "multipartResolver") public CommonsMultipartResolver commonsMultipartResolver(){ return new CommonsMultipartResolver(); }
使用
@RequestPart(required = true) MultipartFile file
并使用版本号2.1.0或最新版本,以前的版本存在错误。
两件事情...
我想你在第二个片段中缺少@RequestMapping的consumemes属性。请参阅以下示例
@RequestMapping(
path = "/upload",
method = RequestMethod.POST,
consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<String> handleUpload(
@RequestPart("file") MultipartFile file,
@RequestParam("someId") Long someId,
@RequestParam("someOtherId") Long someOtherId) {
return new ResponseEntity<>();
}