Appearance
上传图片到 CDN
把本地图片(base64)上传到腾讯 CDN,拿到发图/下载所需的媒体凭证。这是 message/sendImage、sendMiniProgram 封面图等的凭证来源。
说明与注意
- data 字段名即
sendImagecontent 所需(id/size/md5/aesKey/thumb* …);返回值直接用于sendImage/sendMiniProgram封面。
请求参数
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
appid | 是 | string | 实例 appid,标识操作哪个已登录账号。示例:we_xxxxxxxxxxxxxxx |
fileName | 是 | string | 文件名。示例:示例图片.jpeg |
base64 | 是 | string | 文件 base64,不含 data: 前缀;单次请求体最大 8MB,超过时用上传大文件到 CDN。示例:<图片 base64> |
请求示例
http
POST {BASE_URL}/wx-api/api/cdn/uploadImage
Authorization: Bearer <你的 App Token>
Content-Type: application/json
{
"appid": "we_xxxxxxxxxxxxxxx",
"fileName": "示例图片.jpeg",
"base64": "<图片 base64>"
}bash
curl -X POST '{BASE_URL}/wx-api/api/cdn/uploadImage' \
-H 'Authorization: Bearer <你的 App Token>' \
-H 'Content-Type: application/json' \
--data-raw '{
"appid": "we_xxxxxxxxxxxxxxx",
"fileName": "示例图片.jpeg",
"base64": "<图片 base64>"
}'python
import requests
url = "{BASE_URL}/wx-api/api/cdn/uploadImage"
headers = {"Authorization": "Bearer <你的 App Token>", "Content-Type": "application/json"}
body = """{
"appid": "we_xxxxxxxxxxxxxxx",
"fileName": "示例图片.jpeg",
"base64": "<图片 base64>"
}"""
resp = requests.post(url, headers=headers, data=body.encode("utf-8"))
print(resp.text)java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
String url = "{BASE_URL}/wx-api/api/cdn/uploadImage";
String body = "{\n" +
" \"appid\": \"we_xxxxxxxxxxxxxxx\",\n" +
" \"fileName\": \"示例图片.jpeg\",\n" +
" \"base64\": \"<图片 base64>\"\n" +
"}";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(URI.create(url))
.header("Authorization", "Bearer <你的 App Token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());php
<?php
$url = '{BASE_URL}/wx-api/api/cdn/uploadImage';
$body = <<<'JSON'
{
"appid": "we_xxxxxxxxxxxxxxx",
"fileName": "示例图片.jpeg",
"base64": "<图片 base64>"
}
JSON;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer <你的 App Token>',
'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;响应示例
json
{
"code": 0,
"data": {
"id": "3068…0400",
"size": 3788,
"width": 200,
"height": 120,
"aesKey": "a80e52a7191df0a1c2aac34076898df4",
"md5": "2228e4e55326a9e5c5478b40a22499d0",
"midImageFileSize": 3562,
"thumbFileSize": 3562,
"thumbWidth": 200,
"thumbHeight": 120,
"thumbMd5": "9736a9f86ba94311a28e1b4ed7115a5a"
},
"detail": "",
"message": "ok",
"time": "2026-09-06 11:40:54"
}响应字段
响应字段(16 项)
| 字段 | 类型 | 说明 |
|---|---|---|
code | int64 | 统一封套状态码:0=成功,负数=失败 |
data | object | 图片凭证,含 id 等字段,可原样传给发送图片消息的 content |
data.id | string | 记录/文件业务标识 |
data.size | int64 | 文件字节数 |
data.width | int64 | 宽(像素) |
data.height | int64 | 高(像素) |
data.aesKey | string | AES 下载解密密钥;CDN 存的是加密字节,下载后用它解密 |
data.md5 | string | 文件内容 MD5,收发方一致性校验 |
data.midImageFileSize | int64 | 中图字节数 |
data.thumbFileSize | int64 | 缩略图字节数 |
data.thumbWidth | int64 | 缩略图宽 |
data.thumbHeight | int64 | 缩略图高 |
data.thumbMd5 | string | 缩略图 MD5 |
detail | string | 附加明细,通常为空 |
message | string | 文案:成功为 ok;失败形如 -码|描述 |
time | string | 服务端处理时间 YYYY-MM-DD HH:MM:SS |