1. 图片消息XML结构特点
用户向公众号发送图片时,微信服务器POST推送的XML消息:
- 新增2个节点:
PicUrl:图片临时访问链接(可直接浏览器打开,链接有有效期)MediaId:媒体资源ID,推荐用这个ID调用微信多媒体下载接口,下载原图
- 没有
Content节点(文本消息才会有Content) - 判断消息类型:
MsgType="image",以此区分图片消息
2. 代码逻辑(C#示例)
// 判断消息类型
case "image":
ImageHandle(xmldoc);
break;
// 处理图片消息
private void ImageHandle(XmlDocument xmldoc)
{
// 读取图片链接节点
XmlNode PicUrl = xmldoc.SelectSingleNode("/xml/PicUrl");
// 将图片链接存入缓存,有效期3600秒
SetCacheDateTime("PicUrl", PicUrl.InnerText, 3600);
}
Code language: JavaScript (javascript)
3. 关键说明
- PicUrl是临时地址:图片链接只能短期访问,不能永久保存图片,如需持久存储,要通过
MediaId调用微信接口下载图片。 - 消息路由:微信把用户消息POST推送到你配置的公众号服务器地址,服务器解析XML,判断
MsgType做对应处理。 - 示例得到的图片链接格式:
[http://mmbiz.qpic.cn/mmbiz_jpg/xxxxxx](http://mmbiz.qpic.cn/mmbiz_jpg/xxxxxx)
4. 和文本消息对比
| 消息类型 | MsgType | XML节点 |
|---|---|---|
| 文本消息 | text | Content |
| 图片消息 | image | PicUrl、MediaId(无Content) |
Previous: 【客服】自动回复完整代码
Next: 公众号接收语音消息