我们正在使用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文档)如果它将MultipartFile视为控制器参数,它将生成适当的swagger控件,对于我们来说情况并非如此。
是否还有其他配置选项可用于提示我们想要在此处上传文件?
答案 0 :(得分:4)
在这里找到我的答案:https://github.com/springfox/springfox/issues/1285
以下隐含的参数给了我我需要的东西:
@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添加了一个简单的文件选择器。为了让事情更加混乱,事实证明这个功能在Springfox 2.4中被破坏了 - 我正在使用的版本。我需要添加注释和更新版本。
答案 1 :(得分:4)
关于Springfox v2.7.0中的更改:
您需要dataType = "__file"
file
代替xx.txt