1 微信公众账号在回复图片、语音、视频的时候,将使用media_id来调用相关文件,很多朋友咨询这个如何开发实现。本文将介绍在微信公众平台开发过程中,如何上传下载多媒体文件。
2
3
4
5 一、上传多媒体文件
6
7 公众号可调用本接口来上传图片、语音、视频等文件到微信服务器,上传后服务器会返回对应的media_id,公众号此后可根据该media_id来获取多媒体。请注意,media_id是可复用的,调用该接口需http协议。
8
9 通常,文件上传是通过html表单进行的,但通过CURL可以不经过浏览器,直接在服务器端进行表单的POST提交,完成文件上传功能。
10
11 需要注意的是:文件名必须是完整绝对路径,另外需要绝对路径前加上“@”以示区分。
12
13 在Windows服务器上,格式示例为:”@F:\israel\upload\winter.jpg”,而在Linux服务器上,格式示例为:”@home/israel/upload/winter.jpg”。
14
15 http请求方式: POST/FORM
16
17 http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
18
19 参数说明
20
21 参数
22
23
24 是否必须
25
26
27 说明
28
29 access_token
30
31
32 是
33
34
35 调用接口凭证
36
37 type
38
39
40 是
41
42
43 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)
44
45 media
46
47
48 是
49
50
51 form-data中媒体文件标识,有filename、filelength、content-type等信息
52
53 上传图片
54
55 返回结果
56
57 {
58 "type": "image",
59 "media_id": "QQ9nj-7ctrqA8t3WKU3dQN24IuFV_516MfZRZNnQ0c-BFVkk66jUkPXF49QE9L1l",
60 "created_at": 1389793969
61 }
62
63
64
65 上传语音
66
67 返回结果
68
69 {
70 "type": "voice",
71 "media_id": "5Idx79V9E3XfBCz_A50gr1a1_klgPpJnb_eq73yz0bn-prhIsNlwI3n6jQgshmWk",
72 "created_at": 1389794760
73 }
74
75
76
77 上传视频
78
79
80
81 返回结果
82
83 {
84 "type": "video",
85 "media_id": "Jm-Wq0nXtA_oN1qNydQRP03dCsB0R2t5gCHDM3QNkBmMRE1WBaorVJNQTBRHvK9-",
86 "created_at": 1389794768
87 }
88
89 上传缩略图
90
91 返回结果
92
93 {
94 "type": "thumb",
95 "thumb_media_id": "2RhP0caRKHVOmZO5AKelHkK--vqPPwgUaRp5-WE63dvmmPRWiYVKgvNblIp_gv79",
96 "created_at": 1389794771
97 }
98
99 参数说明
100
101 参数
102
103
104 描述
105
106 type
107
108
109 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb,主要用于视频与音乐格式的缩略图)
110
111 media_id
112
113
114 媒体文件上传后,获取时的唯一标识
115
116 created_at
117
118
119 媒体文件上传时间戳
120
121 注意事项
122
123 上传的多媒体文件有格式和大小限制,如下:
124
125 图片(image): 128K,支持JPG格式
126
127 语音(voice):256K,播放长度不超过60s,支持AMR\MP3格式
128
129 视频(video):1MB,支持MP4格式
130
131 缩略图(thumb):64KB,支持JPG格式
132
133 媒体文件在后台保存时间为3天,即3天后media_id失效。对于需要重复使用的多媒体文件,可以每3天循环上传一次,更新media_id。
134
135
136
137 二、下载多媒体文件
138
139 公众号可调用本接口来获取多媒体文件。请注意,视频文件不支持下载,调用该接口需http协议。
140
141 下载文件使用获取图片数据,写入新文件的方法。
142
143 http请求方式: GET
144
145 http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID
146
147 参数说明
148
149 参数
150
151
152 是否必须
153
154
155 说明
156
157 access_token
158
159
160 是
161
162
163 调用接口凭证
164
165 media_id
166
167
168 是
169
170
171 媒体文件ID
172
173
174
175 下载图片
176
177 代码实现
178
179 返回HTTP头示例如下
18181
182 {
183 "url": "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=My4oqLEyFVrgFF-XOZagdvbTt9XywYjGwMg_GxkPwql7-f0BpnvXFCOKBUyAf0agmZfMChW5ECSyTAgAoaoU2WMyj7aVHmB17ce4HzLRZ3XFTbm2vpKt_9gYA29xrwIKpnvH-BYmNFSddt7re5ZrIg&media_id=QQ9nj-7ctrqA8t3WKU3dQN24IuFV_516MfZRZNnQ0c-BFVkk66jUkPXF49QE9L1l",
184 "content_type": "image/jpeg",
185 "http_code": 200,
186 "header_size": 308,
187 "request_size": 316,
188 "filetime": -1,
189 "ssl_verify_result": 0,
190 "redirect_count": 0,
191 "total_time": 1.36,
192 "namelookup_time": 1.016,
193 "connect_time": 1.078,
194 "pretransfer_time": 1.078,
195 "size_upload": 0,
196 "size_download": 105542,
197 "speed_download": 77604,
198 "speed_upload": 0,
199 "download_content_length": 105542,
200 "upload_content_length": 0,
201 "starttransfer_time": 1.141,
202 "redirect_time": 0
203 }
204
205206
207
208
209 下载语音
210
211 代码实现
212
213 返回HTTP头如下
214 215
216 {
217 "url": "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=My4oqLEyFVrgFF-XOZagdvbTt9XywYjGwMg_GxkPwql7-f0BpnvXFCOKBUyAf0agmZfMChW5ECSyTAgAoaoU2WMyj7aVHmB17ce4HzLRZ3XFTbm2vpKt_9gYA29xrwIKpnvH-BYmNFSddt7re5ZrIg&media_id=5Idx79V9E3XfBCz_A50gr1a1_klgPpJnb_eq73yz0bn-prhIsNlwI3n6jQgshmWk",
218 "content_type": "audio/amr",
219 "http_code": 200,
220 "header_size": 306,
221 "request_size": 316,
222 "filetime": -1,
223 "ssl_verify_result": 0,
224 "redirect_count": 0,
225 "total_time": 0.125,
226 "namelookup_time": 0.031,
227 "connect_time": 0.063,
228 "pretransfer_time": 0.063,
229 "size_upload": 0,
230 "size_download": 10470,
231 "speed_download": 83760,
232 "speed_upload": 0,
233 "download_content_length": 10470,
234 "upload_content_length": 0,
235 "starttransfer_time": 0.125,
236 "redirect_time": 0
237 }
238
239240
241 可以看出,MP3的语音格式被压缩成AMR格式了。
242
243
244
245 下载缩略图
246
247 实现代码
248
249 返回HTTP头如下
250 251
252 {
253 "url": "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=My4oqLEyFVrgFF-XOZagdvbTt9XywYjGwMg_GxkPwql7-f0BpnvXFCOKBUyAf0agmZfMChW5ECSyTAgAoaoU2WMyj7aVHmB17ce4HzLRZ3XFTbm2vpKt_9gYA29xrwIKpnvH-BYmNFSddt7re5ZrIg&media_id=2RhP0caRKHVOmZO5AKelHkK--vqPPwgUaRp5-WE63dvmmPRWiYVKgvNblIp_gv79",
254 "content_type": "image/jpeg",
255 "http_code": 200,
256 "header_size": 306,
257 "request_size": 316,
258 "filetime": -1,
259 "ssl_verify_result": 0,
260 "redirect_count": 0,
261 "total_time": 0.094,
262 "namelookup_time": 0,
263 "connect_time": 0.047,
264 "pretransfer_time": 0.047,
265 "size_upload": 0,
266 "size_download": 6057,
267 "speed_download": 64436,
268 "speed_upload": 0,
269 "download_content_length": 6057,
270 "upload_content_length": 0,
271 "starttransfer_time": 0.094,
272 "redirect_time": 0
273 }
274
2276
277 至于回复相应的消息,就是利用消息接口或者客服接口,构造成相应的消息就行了,和构造文本,图文消息的方法是一样的。