企业微信接口
素材上传得到media_id,该media_id仅三天内有效
media_id在同一企业内应用之间可以共享
请求方式:POST(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
使用multipart/form-data POST上传文件, 文件标识名为”media”
参数说明:
参数 | 必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
type | 是 | 媒体文件类型,分别有图片(image)、语音(voice)、视频(video),普通文件(file) |
POST的请求包中,form-data中媒体文件标识,应包含有 filename、filelength、content-type等信息
filename标识文件展示的名称。比如,使用该media_id发消息时,展示的文件名由该字段控制
请求示例:
POST https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=accesstoken001&type=file HTTP/1.1
Content-Type: multipart/form-data; boundary=-------------------------acebdf13572468
Content-Length: 220
---------------------------acebdf13572468
Content-Disposition: form-data; name="media";filename="wework.txt"; filelength=6
Content-Type: application/octet-stream
mytext
---------------------------acebdf13572468--
返回数据:
{
"errcode": 0,
"errmsg": "",
"type": "image",
"media_id": "1G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu9V5w7o8K0",
"created_at": "1380000000"
}
@ApiOperation(value = "上传临时素材接口(上传到企业微信)")
@PostMapping(value = "/ac/admin/wechatmm/media/upload")
public Result<WechatUploadDto> upload(
HttpServletRequest request, @RequestParam(value = "mytext") MultipartFile file) {
PreconditionsUtils.checkNotNull(request.getParameter("resCode"), "资源唯一code不能为空");
PreconditionsUtils.checkNotNull(request.getParameter("type"), "媒体文件类型不能为空");
WechatUploadVo uploadVo = new WechatUploadVo();
uploadVo.setResCode(request.getParameter("resCode"));
uploadVo.setType(request.getParameter("type"));
WechatUploadDto wechatUploadDto = null;
try {
wechatUploadDto = weChatCommonApi.wechatUpload(uploadVo, file);
} catch (Exception e) {
e.printStackTrace();
PreconditionsUtils.checkArgument(true, "文件上传失败");
}
return Result.success(wechatUploadDto);
}
关键代码:
// 微信上传临时素材url
String wechatUploadUrl = weUploadUrl + gettoken + "&type=" + type;
RestTemplate remplate = new RestTemplate();
MultiValueMap request = new LinkedMultiValueMap(1);
ByteArrayResource isResource =
new ByteArrayResource(file.getBytes()) {
@Override
public String getFilename() {
return file.getOriginalFilename();
}
};
request.add("mytext", isResource);
WechatUploadDto wechatUploadDto = remplate.postForObject(wechatUploadUrl, request, WechatUploadDto.class);