用于流式多部分文件上载的Java Swagger(Springfox)注释

用于流式多部分文件上载的Java Swagger(Springfox)注释,java,swagger,springfox,Java,Swagger,Springfox,我们使用spring控制器处理文件上载: 例如: @RequestMapping(value = "/scan", method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE}) public ScanResult scan(HttpServletRequest request) throws IOException, FileUploadException { return scanServi

我们使用spring控制器处理文件上载:

例如:

@RequestMapping(value = "/scan", method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
public ScanResult scan(HttpServletRequest request) throws IOException, FileUploadException {
    return scanService.scanFile(parseMultipart(request));
}
但是我们没有使用任何多部分解析器,而是从servlet请求输入流中流式传输文件。出于性能原因,我们需要立即开始处理该文件

这样做时,我们似乎无法对多部分文件使用典型的检测/配置。我知道Springfox(我们使用它来生成我们的swagger文档)将生成适当的swagger控件,如果它将一个多部分文件视为控制器参数,我们就不会这样做

是否有其他配置选项可用于提示springfox我们需要在此处上载文件?

在此处找到我的答案:

以下隐式参数为我提供了所需:

@ApiImplicitParams (value = {
    @ApiImplicitParam(dataType = "file", name = "file", required = true,paramType = "form")}
@RequestMapping(value = "/scan", method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
public ScanResult scan(HttpServletRequest request) throws IOException, FileUploadException {
    return scanService.scanFile(parseMultipart(request));
}

这将向API添加一个简单的文件选择器。为了让事情变得更加混乱,原来这个功能在Springfox2.4中被破坏了——我使用的版本。添加注释和更新版本是我所需要做的全部工作。

关于Springfox v2.7.0中的突破性更改:


您需要使用
dataType=“\uu file”
而不是
file
,如

中所述,非常感谢您的分享。对于任何未来的旁观者来说,Springfox 2.7.0-SNAPSHOT打破了这个功能,尽管它在2.6.0中工作。谢谢你帮了我的忙!我在Springfox 2.9.2中遇到了这个问题