springboot的微信公众号(七)图片消息

298 阅读1分钟

前面我们说了文本消息,图片消息相对要困难点

我们先看文档

首先这里面xml标签里面有一个image的标签,然后里面有一个mediaID标签,多重标签,顾名思义,你首先有一个msg类,然后属性里面包含image,然后image里面有一个属性mediaid。

从上面我们可以看到mediaid是通过素材管理中的接口上传多媒体文件得到的id

我们看一下文档

接口文档中分为临时素材和永久素材

我们点进去新增临时素材,

确实有一个mediaid,我们发送图片所需要的就是这个id,我们发送消息什么的是通过微信服务器发,虽然我们本地有图片,但是微信服务器没有,所以我们要先将素材上传到微信服务器,获取唯一标识去提取,然后发送

关于如何获取这个id;传送门

我们获取这个id之后就简单了

if ("2".equals(content)) {
			String mediaId = WeiXinUtil.upload("C:/Users/Administrator/Desktop/code.jpg", "image");//上传到微信服务器获取mediaId
			MsgUtil.sendImageMsgToUser( openId,formUser,response,mediaId);
		}
/**
	 * 发送图片消息
	 * @param openId
	 * @param formUser
	 * @param response
	 */
	public static void sendImageMsgToUser(String openId, String formUser, HttpServletResponse response,String mediaId) {
		ImageMsg msg = new ImageMsg();
		Image image = new Image();
		image.setMediaId(mediaId);
		msg.setImage(image);
		msg.setFromUserName(formUser);
		msg.setToUserName(openId);
		sendMsg(response, msg);
	}

后面就跟图片消息一样的了

然后imagemsg类

import java.util.Date;

public class ImageMsg extends BaseMessage{

	/**
	 * 注意首字母一定大写
	 */
	private Image Image;
	public ImageMsg(){
		this.setMsgType("image");
		this.setCreateTime(new Date().getTime());
	}
	public Image getImage() {
		return Image;
	}
	public void setImage(Image image) {
		this.Image = image;
	}
	
	
}

image

public class Image {
	
	
	private String MediaId;//图片消息媒体id
	
	
	public String getMediaId() {
		return MediaId;
	}
	public void setMediaId(String mediaId) {
		MediaId = mediaId;
	}
	
	

}

发送成功的样例

然后日志消息