解决服务间Feign调用无法接受MultipartFile参数的问题
客户端
@FeignClient(name = "fileservice")
public interface FileClient {
@PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
JsonData uploadsfile(@RequestPart("file") MultipartFile file);
}
服务端
@ApiOperation(value = "上传文件", notes = "上传文件")
@PostMapping(value = "/upload")
public JsonData uploadsfile(MultipartFile file) {
String remoteUpload = fileUtil.multiUploadfortype(file);
return new JsonData<>().success(remoteUpload);
}
服务端不管是@RequestPart(“file”)还是@RequestParam(“file”)都无法接到file;
服务端改:
@ApiOperation(value = "上传文件", notes = "上传文件")
@PostMapping(value = "/upload")
public JsonData uploadsfile(@RequestParam MultipartFile file, HttpServletRequest request) {
if (file == null) {
// 解决服务间调用无法接受MultipartFile参数的问题
String contentType = request.getContentType();
if (contentType != null && contentType.toLowerCase().startsWith("multipart/")) {
MultipartHttpServletRequest multipartRequest =
WebUtils.getNativeRequest(request, MultipartHttpServletRequest.class);
if (multipartRequest != null) {
MultiValueMap<String, MultipartFile> multiFileMap = multipartRequest.getMultiFileMap();
for (Map.Entry<String, List<MultipartFile>> entry : multiFileMap.entrySet()) {
file = entry.getValue().get(0);
}
}
}
}
String remoteUpload = fileUtil.multiUploadfortype(file);
return new JsonData<>().success(remoteUpload);
}