1.feign不支持同时传递文件集和对象(本人暂未找到…)
临时解决方案:
client端
/**
* 上传文件并返回文件信息
*
* @param mpFile 上传的文件
* @param ossFile 文件信息
* @return 文件信息
*/
public OssFileDTO saveFile(MultipartFile mpFile, OssFileDTO ossFile) {
if (mpFile != null) {
OssMultipartFileHandler.appendFileInfo(ossFile, mpFile);
return client.uploadAndSaveFile(mpFile, JSON.toJSONString(ossFile));
} else {
throw new BusinessException("上传的文件不能为空");
}
}
server端:
/**
* 上传附件并保存文件信息
*
* @param mpFile 上传的文件
* @param json OssFileDTO数据的json串
* @return 文件预签名URL
*/
@Override
@PostMapping(value = "/uploadAndSaveFile", produces = {MediaType.APPLICATION_JSON_VALUE}, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public OssFileDTO uploadAndSaveFile(@RequestPart("file") MultipartFile mpFile, @RequestPart("json") String json) {
return fileService.uploadAndSaveFile(mpFile, json);
}
@SneakyThrows
@Override
public OssFileDTO uploadAndSaveFile(MultipartFile mpFile, String json) {
//1.解析文件信息
OssFileDTO dto = JSON.toJavaObject(JSON.parseObject(json), OssFileDTO.class);
...
return dto;
}