前言
上传的图片大小限制:图片文件大小应在 5B ~ 2MB 之间
一、上传图片
上传图片得到图片URL,该URL永久有效
返回的图片URL,仅能用于图文消息正文中的图片展示,或者给客户发送欢迎语等;若用于非企业微信环境下的页面,图片将被屏蔽。
每个企业每月最多可上传3000张图片,每天最多可上传1000张图片
二、使用步骤
1.引入库
我这里使用了Hutool工具包
<!-- hutool工具包 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.6</version>
</dependency>
2.实现代码
使用multipart/form-data POST上传文件。
请求方式:POST(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN
这里就只需要access_token。
如果不知道access_token获取的,请参考我的:springboot获取企业微信的access_token凭证博客
先看官方请求示例:
POST的请求包中,form-data中媒体文件标识,应包含有filename、content-type等信息
---------------------------acebdf13572468
Content-Disposition: form-data; name="fieldNameHere"; filename="20180103195745.png"
Content-Type: image/png
Content-Length: 220
<@INCLUDE *C:\Users\abelzhu\Pictures\企业微信截图_20180103195745.png*@>
---------------------------acebdf13572468--
我的核心代码:
上一篇:实现企业微信上传临时素材对Hutool工具包的HttpRequest提交已经讲得很清楚了,不懂请看上一篇,或者看官方api
/**
* 上传图片
* @param files
* @param materialUploadDTO
* @return
*/
@Override
public Result mediaUploadImg(MultipartFile files, MaterialUploadDTO materialUploadDTO) {
Map<String,Object> map = new HashMap<>();
try {
String accessToken = "";//接口凭证这个就不再介绍了
String url = mediaUploadImg.replace("ACCESS_TOKEN",accessToken);
String fileName = files.getOriginalFilename();
String res = HttpRequest.post(url).form("fieldNameHere",files.getBytes(),fileName).setHttpProxy(httpProxyHost,httpProxyPort).execute().body();
log.info("从企微接口:{}----上传图片结果:{}",url,res);
JSONObject jsonObject = JSONObject.parseObject(res);
if(jsonObject.containsKey("errcode") && jsonObject.getInteger("errcode") != 0){
return Result.success(ResponseHead.error(jsonObject.toJSONString()));
}
map.put("responseHead",ResponseHead.success("成功!"));
map.put("responseBody",jsonObject);
}catch (Exception e){
log.error("上传图片异常:{}",e.getMessage());
e.printStackTrace();
}
return Result.success(map);
}
返回示列:
上传后得到的图片URL。永久有效
{
"errcode": 0,
"errmsg": "",
"url" : "http://p.qpic.cn/pic_wework/3474110808/7a7c8471673ff0f178f63447935d35a5c1247a7f31d9c060/0"
}
总结
需要注意图片文件大小应在 5B ~ 2MB 之间