一、上传多媒体文件
公众号可调用本接口来上传图片、语音、视频等文件到微信服务器,上传后服务器会返回对应的media_id,公众号此后可根据该media_id来获取多媒体。请注意,media_id是可复用的,调用该接口需http协议。
通常,文件上传是通过html表单进行的,但通过curl可以不经过浏览器,直接在服务器端进行表单的post提交,完成文件上传功能。
需要注意的是:文件名必须是完整绝对路径,另外需要绝对路径前加上“@”以示区分。
在windows服务器上,格式示例为:”@f:\israel\upload\winter.jpg”,而在linux服务器上,格式示例为:”@home/israel/upload/winter.jpg”。
http请求方式: post/form
http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=access_token&type=type
参数说明
参数
是否必须
说明
access_token
是
调用接口凭证
type
是
媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)
media
是
form-data中媒体文件标识,有filename、filelength、content-type等信息
上传图片
返回结果
{ type: image, media_id: qq9nj-7ctrqa8t3wku3dqn24iufv_516mfzrznnq0c-bfvkk66jukpxf49qe9l1l, created_at: 1389793969}
上传语音
返回结果
{ type: voice, media_id: 5idx79v9e3xfbcz_a50gr1a1_klgppjnb_eq73yz0bn-prhisnlwi3n6jqgshmwk, created_at: 1389794760}
上传视频
返回结果
{ type: video, media_id: jm-wq0nxta_on1qnydqrp03dcsb0r2t5gchdm3qnkbmmre1wbaorvjnqtbrhvk9-, created_at: 1389794768}
上传缩略图
返回结果
{ type: thumb, thumb_media_id: 2rhp0carkhvomzo5akelhkk--vqppwguarp5-we63dvmmprwiyvkgvnblip_gv79, created_at: 1389794771}
参数说明
参数
描述
type
媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb,主要用于视频与音乐格式的缩略图)
media_id
媒体文件上传后,获取时的唯一标识
created_at
媒体文件上传时间戳
注意事项
上传的多媒体文件有格式和大小限制,如下:
图片(image): 128k,支持jpg格式
语音(voice):256k,播放长度不超过60s,支持amr\mp3格式
视频(video):1mb,支持mp4格式
缩略图(thumb):64kb,支持jpg格式
媒体文件在后台保存时间为3天,即3天后media_id失效。对于需要重复使用的多媒体文件,可以每3天循环上传一次,更新media_id。
二、下载多媒体文件
公众号可调用本接口来获取多媒体文件。请注意,视频文件不支持下载,调用该接口需http协议。
下载文件使用获取图片数据,写入新文件的方法。
http请求方式: get
http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=access_token&media_id=media_id
参数说明
参数
是否必须
说明
access_token
是
调用接口凭证
media_id
是
媒体文件id
下载图片
代码实现
返回http头示例如下
{ 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, content_type: image/jpeg, http_code: 200, header_size: 308, request_size: 316, filetime: -1, ssl_verify_result: 0, redirect_count: 0, total_time: 1.36, namelookup_time: 1.016, connect_time: 1.078, pretransfer_time: 1.078, size_upload: 0, size_download: 105542, speed_download: 77604, speed_upload: 0, download_content_length: 105542, upload_content_length: 0, starttransfer_time: 1.141, redirect_time: 0}
下载语音
代码实现
返回http头如下
{ 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, content_type: audio/amr, http_code: 200, header_size: 306, request_size: 316, filetime: -1, ssl_verify_result: 0, redirect_count: 0, total_time: 0.125, namelookup_time: 0.031, connect_time: 0.063, pretransfer_time: 0.063, size_upload: 0, size_download: 10470, speed_download: 83760, speed_upload: 0, download_content_length: 10470, upload_content_length: 0, starttransfer_time: 0.125, redirect_time: 0}
可以看出,mp3的语音格式被压缩成amr格式了。
下载缩略图
实现代码
返回http头如下
{ 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, content_type: image/jpeg, http_code: 200, header_size: 306, request_size: 316, filetime: -1, ssl_verify_result: 0, redirect_count: 0, total_time: 0.094, namelookup_time: 0, connect_time: 0.047, pretransfer_time: 0.047, size_upload: 0, size_download: 6057, speed_download: 64436, speed_upload: 0, download_content_length: 6057, upload_content_length: 0, starttransfer_time: 0.094, redirect_time: 0}
至于回复相应的消息,就是利用消息接口或者客服接口,构造成相应的消息就行了,和构造文本,图文消息的方法是一样的。
更多微信公众平台开发 上传下载多媒体文件 。
