首先要知道第三方接口需要什么参数:
@Getter
@Setter
@ToString
public class FaltMapBase64Dto {
private String imageName;
private String imageContent;
private String serviceType;
}
imageContent就是base64的图片字符串
通过feign去请求:
@FeignClient(url = "${fegin-inter-api.utilityUrl}", name = "utilityUrl")
public interface FlatInfoMapFeign {
@PostMapping(value = {"files/uploadImageBase64"})
BaseRes<String> uploadFlatMapForBase64(@RequestBody FaltMapBase64Dto dto);
}
controller:
前端是始终以(Binary)的方式去传递文件
前端接收:
public Result<String> uploadFlatMap(
@RequestPart(value = "file",required = true) MultipartFile file) throws Exception {
}
判断文件名称和文件类型(我这里是图片)
if(StringUtils.isEmpty(file.getName())){
return "文件是null";
}
文件类型判断:
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
if(!FileUtils.isImageFile(suffix)){
return sendFailedMsg(ResEnum.FILE_TYPE_ERROR.KEY,file.getOriginalFilename());
}
/================================================================================
/**
* 判断是否是图片格式
* @param suffix
* @return true:是图片 false:不是图片
*/
public static boolean isImageFile(String suffix) {
if(!(EnumUtil.FILE_TYPE.IMG_TYPE_PNG.VALUE.equals(suffix.toUpperCase()) ||
EnumUtil.FILE_TYPE.IMG_TYPE_GIF.VALUE.equals(suffix.toUpperCase()) ||
EnumUtil.FILE_TYPE.IMG_TYPE_JPEG.VALUE.equals(suffix.toUpperCase()) ||
EnumUtil.FILE_TYPE.IMG_TYPE_JPG.VALUE.equals(suffix.toUpperCase()) ||
EnumUtil.FILE_TYPE.IMG_TYPE_PNG.VALUE.equals(suffix.toUpperCase()) ||
EnumUtil.FILE_TYPE.IMG_TYPE_SVG.VALUE.equals(suffix.toUpperCase()))){
return false;
}else{
return true;
}
}
文件枚举:
public class EnumUtil {
/**
* 文件类型
*/
public static enum FILE_TYPE{
IMG_TYPE_PNG(1, "PNG"),
IMG_TYPE_JPG (2,"JPG"),
IMG_TYPE_JPEG(3,"JPEG"),
IMG_TYPE_DMG (4,"BMP"),
IMG_TYPE_GIF (5,"GIF"),
IMG_TYPE_SVG (6,"SVG");
public int KEY;
public String VALUE;
private FILE_TYPE(int key, String value) {
this.KEY = key;
this.VALUE = value;
}
public static FILE_TYPE get(int key) {
FILE_TYPE[] values = FILE_TYPE.values();
for (FILE_TYPE object : values) {
if (object.KEY == key) {
return object;
}
}
return null;
}
}
}
muiltpartfile
转base64
String base64Str = Base64Util.mfileToBase64(file);
sFlatInfoUploadDto.setFileBase64(base64Str.replaceAll("\r\n", ""));
muiltPartFile转Base64的工具类
public static String mfileToBase64(MultipartFile file) throws Exception{
BASE64Encoder base64Encoder =new BASE64Encoder();
// file.getOriginalFilename()+","+
String base64EncoderImg = base64Encoder.encode(file.getBytes());
return base64EncoderImg;
}
上传即可!