1.查看API文档
2.将上传素材接口放入枚举类
3.使用okhttp上传file,请求接口
public static String sendFormByPost(String url, File file){
RequestBody fileBody = RequestBody.create(MediaType.parse("application/octet-stream"),file);
MultipartBody body = new MultipartBody.Builder()
.setType(FROM_DATA)
.addFormDataPart("media",file.getName(),fileBody)
.build();
Request request = new Request.Builder()
.post(body)
.url(url)
.build();
try {
return OK_HTTP_CLIENT.newCall(request).execute().body().string();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
4.新建service类
String uploadMaterial(File file,String type);
@Override
public String uploadMaterial(File file,String type) {
CtBossSender ctBossSender=new CtBossSender(ApiEum.MEDIA_UPLOAD_URL.getInfo()); //获取菜单结构
String accessToken=redisTemplate.opsForValue().get(MessageTypeEnum.ACCESS_TOKEN.getInfo());
log.info("上传素材参数为={}", file.getName());
NutMap nutMap = ctBossSender.sendFile(file,type,accessToken);
log.info("上传素材返回参数为={}",JSON.toJSONString(nutMap));
return JSON.toJSONString(nutMap);
}
public NutMap sendFile(File file, String type, String token){
init(token,type);
log.info("发送请求的url:url={}",url);
NutMap response = JSON.parseObject(OKHttp3Utils3.sendFormByPost(url,file),NutMap.class);
log.info("Send iot request end... responseBody={}", JSON.toJSONString(response));
return response;
}
private void init(String token, String type) {
StringBuilder reqUrl = new StringBuilder(this.url).append("?");
reqUrl.append("&access_token=").append(token);
reqUrl.append("&type=").append(type);
this.url = reqUrl.toString();
}
5.编写controller
@PostMapping("/uploadMaterial")
public void uploadMaterial(){
File file=new File("D:\\msg\\mei.png");
materialService.uploadMaterial(file,"media");
}
6.测试