微信公众平台开发 上传下载多媒体文件

时间:2024-02-20 13:06:51
  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 至于回复相应的消息,就是利用消息接口或者客服接口,构造成相应的消息就行了,和构造文本,图文消息的方法是一样的。