Java 使用Springfox和Swagger ui上传多部分文件
我使用SpringMVC作为rest控制器,并使用Springfox将Swagger ui与控制器集成。我想有一个方法,能够上传一个文件通过大摇大摆的用户界面。我只需要两个参数,一个用于对象id的长效参数和要上载的文件Java 使用Springfox和Swagger ui上传多部分文件,java,spring,spring-mvc,file-upload,swagger-ui,Java,Spring,Spring Mvc,File Upload,Swagger Ui,我使用SpringMVC作为rest控制器,并使用Springfox将Swagger ui与控制器集成。我想有一个方法,能够上传一个文件通过大摇大摆的用户界面。我只需要两个参数,一个用于对象id的长效参数和要上载的文件 @RestController 公共类控制器{ @RequestMapping(value=“/upload”,method=RequestMethod.POST) public void上载文件(@RequestParam Long id, @RequestParam(多部分文
@RestController
公共类控制器{
@RequestMapping(value=“/upload”,method=RequestMethod.POST)
public void上载文件(@RequestParam Long id,
@RequestParam(多部分文件){
//做点什么
}
}
我已经尝试了几乎所有的方法,但我无法让文件上传按钮出现。但是,如果我这样做:
@RestController
公共类控制器{
@RequestMapping(value=“/upload”,method=RequestMethod.POST)
public void上载文件(@RequestParam Long id,
@请求部分文件){
//做点什么
}
}
文件上载按钮出现,但在尝试上载文件时,它总是抛出http代码415。此外,我需要输入一个多部分文件,而不是一个常规文件。即使我对多部分文件使用@RequestPart注释,也不会出现“选择要上载的文件”按钮。我怎样才能让它工作????甚至:
@RestController
公共类控制器{
@RequestMapping(value=“/upload”,method=RequestMethod.POST)
public void上载文件(@RequestPart字符串元数据,
@RequestPart(多部分文件){
//做点什么
}
}
不行。如果有人可以演练如何使此按钮在MultipartFile中显示?我将永远感激。使用
@RequestPart(required=true)多部分文件
并且使用2.1.0或最新版本,以前的版本有一个bug
在我的情况下,我需要做两件事
我的MultipartFile请求参数必须命名为'file',否则,swagger ui将不会显示文件上载输入控件
我必须注册以下bean
有两件事
消耗值应为“多部分/表单数据”
<代码>使用=“多部分/表单数据”
@RequestPart(“文件”)@ApiParam(value=“file”,required=true)多部件文件
我认为您在第二个代码片段中缺少@RequestMapping的consumes属性。请参见下面的示例
@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<>();
}
@RequestMapping(
path=“/upload”,
method=RequestMethod.POST,
consumes=MediaType.MULTIPART\u FORM\u DATA\u VALUE)
公共责任手册(
@请求部分(“文件”)多部分文件,
@RequestParam(“someId”)长someId,
@RequestParam(“someOtherId”)长someOtherId){
返回新的ResponseEntity();
}
尝试对MultipartFile使用@RequestPart而不是@RequestParam
@RestController
public class controller {
@RequestMapping(value="/upload", method=RequestMethod.POST)
public void uploadFile(@RequestParam Long id,
@RequestPart MultipartFile file) {
//do some stuff
}
}
感谢您提供的代码片段。
我使用了来自的解决方案,但这意味着要使用Spring的XML配置,这是我试图避免的:)应该指出的是,在使用Maven/Gradle/etc时,必须为库添加依赖项(至少我必须这样做),否则,Spring IoC系统无法检索到要将文件上载到的bean。在我的情况下,我必须像原始答案一样将@RequestParam更改为@RequestPart。也许您应该编辑答案。t如果您设置了正确的答案,那就太好了。此答案不会添加任何以前的答案尚未提供的内容
@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<>();
}
@RestController
public class controller {
@RequestMapping(value="/upload", method=RequestMethod.POST)
public void uploadFile(@RequestParam Long id,
@RequestPart MultipartFile file) {
//do some stuff
}
}