白驹过隙,这篇文章距今已有一年以上的历史。技术发展日新月异,文中的观点或代码很可能过时或失效,请自行甄别:)

因为这个问题折腾了我至少2个小时,把小马哥官方的文档翻来覆去地看了N遍,google,baiduN多资料都没有结果,最后终于发现丫的,该死的官方文档写错了,心中一万个草泥马飘过,作为官方的文档,能不能负责一点???!!!为了避免还有哥们儿跟我一样在这儿掉进这坑爹的坑里,记录下方法。

官方在新增永久素材时说:

通过POST表单来调用接口,表单id为media,包含需要上传的素材内容,有filename、filelength、content-type等信息。请注意:图片素材将进入公众平台官网素材管理模块中的默认分组。

http请求方式: POST
http://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN
调用示例(使用curl命令,用FORM表单方式新增一个其他类型的永久素材):
curl -F media=@test.jpg "http://file.api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN"

是不是跟我一样没搞懂?然后为了试验,你跟着它文档说的:请求http://file.api.weixin.qq.com/cgi-bin/material/add_material,然后用from-data方式上传?就跟我下图这样?然后就发现坑爹的反应尼码居然没反映??!!

Screenshot from 2015-03-31 23:12:11.png

经过我各种试验,最后发现。。。文档这儿的调用示例的请求地址写错了!!!!写错了!!!正确的应该是http://api.weixin.qq.com/cgi-bin/material/add_material,而不是示例的这个http://file.api.weixin.qq.com/cgi-bin/material/add_material,好了,尽情的玩吧。。。

but。。。下面说如果上传视频还要这样,啥意思?

新增永久视频素材需特别注意

在上传视频素材时需要POST另一个表单,id为description,包含素材的描述信息,内容格式为JSON,格式如下:

{
"title":VIDEO_TITLE,
"introduction":INTRODUCTION
}

其实就是加一个字段为'description',值为json的字符串'{"title":"xxx","introduction":"xxx"}',就是这样。。。

Screenshot from 2015-03-31 23:15:16.png