美文网首页
PHP7.0.7微信公众号开发-新增临时素材

PHP7.0.7微信公众号开发-新增临时素材

作者: 闫美丽 | 来源:发表于2016-11-03 12:13 被阅读2680次

     微信官文文档:

     注意事项

    1、对于临时素材,每个素材(media_id)会在开发者上传或粉丝发送到微信服务器3天后自动删除(所以用户发送给开发者的素材,若开发者需要,应尽快下载到本地),以节省服务器资源。

    2、media_id是可复用的。

    3、素材的格式大小等要求与公众平台官网一致。具体是,图片大小不超过2M,支持png/jpeg/jpg/gif格式,语音大小不超过5M,长度不超过60秒,支持mp3/amr格式

    4、需使用https调用本接口。

    调用示例(使用curl命令,用FORM表单方式上传一个多媒体文件):

    curl -F media=@test.jpg "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE"

    根据微信的官方文档开看,我们只需要传三个参数 access_token、type、@fileurl(绝对路径)

    所以笔者第一次就按照这个文档来了,传了三个参数,但是上传返回 48001 好吧接口未授权,然后笔者去微信官方申请了一个测试号,录入AppID和AppSecret 然后继续重来,这次没出现 48001 出现了一个 45001 重点来了,45001 看后面的英文意思就是媒体文件不存在,怎么可能不存在呢?返回代码打印了文件路径,发现路径没有任何问题,继续重来还是45001。郁闷了,然后用命令进行测试看是否是问下的接口问题,curl -F media=@test.jpg "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE" 这行命令代码换上正确的参数后 执行 发现能正确返回media_id.

    命令测试微信接口

    那么到底是什么问题呢?现在我们能确定两点1:不是微信接口的问题,2:不是路径问题,让我不禁怀疑到curl函数的问题,刚开始没怀疑它是因为这个函数能正确的获取的access_token但是现在不得不怀疑是否上传文件的时候要发生改变。好吧,咱们去百度curl模拟上传文件发现了一个很重要的问题

            PHP5.5以下是支持@+文件这种方式上传文件

            PHP5.5以上是支持 new \CURLFile(文件) 这种方式上传文件

    然后笔者的却是php7.0.7那么事不宜迟赶紧换方式上传试试,改掉文件上传的方式后,测试成功!

    接口测试成功

    真是皇天不负有心人啊,说了这么多不如给大家分享点代码,那么下面上代码吧

    上传多媒体接口 curl模拟表单上传文件

    总结:总之微信的文档不会写的很详细,这就需要我们一步步排查错误,大胆怀疑不能错的地方。然后谷歌、百度看看大牛们都怎么处理的。祝你们能写出一个完美的程序!

    相关文章

      网友评论

          本文标题:PHP7.0.7微信公众号开发-新增临时素材

          本文链接:https://www.haomeiwen.com/subject/qdibuttx.html