上传永久素材(图片)
功能说明
使用 Senparc 的 MediaApi.UploadImg 接口可以上传永久图片素材。与临时素材不同,该接口专门用于上传图文消息中需要引用的图片(如封面图、正文图片),上传成功后会直接返回一个可公网访问的图片 URL,无需再通过 media_id 获取。
注意:
UploadImg上传的是”图文消息内使用的图片”,不是普通永久素材(UploadForeverMedia)。两者用途不同。
实现代码
/// <summary>
/// 上传永久素材 主要用到MediaApi这个接口
/// </summary>
/// <returns></returns>
public UploadImgResult UploadImg()
{
var accessToken = AccessTokenContainer.TryGetAccessToken(appId, appSecret);
string imgFilePath = Server.MapPath("~/logo.png");
return MediaApi.UploadImg(accessToken, imgFilePath);
}Code language: PHP (php)
返回结果
UploadImgResult 主要包含以下属性:
| 属性 | 说明 |
|---|---|
url | 图片的公网访问地址,可直接用于图文消息的 content 中 |
errcode | 错误码,0 表示成功 |
errmsg | 错误信息,”ok” 表示成功 |
上传成功后,url 类似:
http://mmbiz.qpic.cn/mmbiz/xxxxxxxxxx/0Code language: JavaScript (javascript)
该地址可直接在浏览器中打开,也可嵌入到图文消息的 HTML 内容中。
使用场景
- 图文消息正文中需要插入图片时,先用此接口上传,拿到
url后写入content - 自定义菜单中
view类型跳转的页面需要引用图片 - 自动回复图文消息(
News)时,封面图需使用UploadForeverMedia获取thumb_media_id,正文图片可用此接口
与 UploadTemporaryMedia 的区别
| 对比项 | UploadImg | UploadTemporaryMedia |
|---|---|---|
| 用途 | 图文消息内图片 | 临时媒体文件 |
| 返回 | 直接返回图片 URL | 返回 media_id |
| 有效期 | 永久 | 3 天 |
| 适用类型 | 仅图片 | 图片、语音、视频、缩略图 |
与 UploadForeverMedia 的区别
| 对比项 | UploadImg | UploadForeverMedia |
|---|---|---|
| 用途 | 图文正文图片 | 永久素材库中的图片/语音/视频 |
| 返回 | 图片 URL | media_id |
| 是否入库素材库 | 否(仅返回 URL) | 是(可在素材库中管理) |
注意:如果需要在自动回复中发送图片消息(
ResponseMessageImage),应使用UploadForeverMedia获取media_id,而不是UploadImg。
常见问题
- 图片大小限制:不超过 1MB
- 图片格式:支持 bmp、png、jpeg、jpg、gif
- 文件路径必须是服务器本地绝对路径,不能传 URL(与临时素材上传同理)
- 未认证订阅号可能无权限调用此接口,测试账号通常可用
Previous: 上传临时素材——以上传一张图片为例
Next: 使用 Senparc 群发文本消息