SpringBoot集成SpringCloud-Feign完成文件转base64上传到第三方接口

文章目录

  • 明确参数
  • feign接口
  • web
  • `muiltpartfile`转`base64`

明确参数

首先要知道第三方接口需要什么参数:

@Getter
@Setter
@ToString
public class FaltMapBase64Dto {

    private String imageName;
    private String imageContent;
    private String serviceType;

}

imageContent就是base64的图片字符串

feign接口

通过feign去请求:

@FeignClient(url = "${fegin-inter-api.utilityUrl}", name = "utilityUrl")
public interface FlatInfoMapFeign {

    @PostMapping(value = {"files/uploadImageBase64"})
    BaseRes<String> uploadFlatMapForBase64(@RequestBody FaltMapBase64Dto dto);

}

web

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;
		}
	}


}

muiltpartfilebase64

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;
    }

上传即可!

你可能感兴趣的:(java)