最近在做一个项目,是一个微信相关的平台,需要获取和新增一些素材文件,这里就需要通过接口来上传文件,经过各种测试,下面把程序写出来,供大家参考。

先写一个curl 模拟post 提交的函数://$url : 接口地址 $param : 上传数据

function http_post($url,$param){

$oCurl = curl_init();

if(stripos($url,"https://")!==FALSE){

curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false);

}

$strPOST = $param;

curl_setopt($oCurl, CURLOPT_URL, $url);

curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );

curl_setopt($oCurl, CURLOPT_POST,true);

curl_setopt($oCurl, CURLOPT_POSTFIELDS,$strPOST);

$sContent = curl_exec($oCurl);

$aStatus = curl_getinfo($oCurl);

curl_close($oCurl);

if(intval($aStatus["http_code"])==200){

return $sContent;

}else{

return false;

}

}

接下来,我看下微信公共平台上,是怎么描述这个接口的:

通过POST表单来调用接口,表单id为media,包含需要上传的素材内容,有filename、filelength、content-type等信息

通过测试,只包含文件的路径也是可以上传的$data['media'] = "@/www/file/test.png";//必须是绝对路径,或者相对网址的路径例如 ./file/test.png,就是说,这个文件一定要程序能访问到

官方提出 form-data中媒体文件标识,有filename、filelength、content-type等信息 然后可以这样写:$data['media'] = "@/www/file/test.png;type=image;filename=test.png;filelength=1024;content-type=image/png";

说明:type 值有:图片(image)、语音(voice)、视频(video)和缩略图(thumb)

filename 文件上传后,设置的名称

filelength 文件大小

content-type 文件类型

接下来,调用函数上传://上传文件curl 不需要json 数据,直接数组

$result = http_post($url,$data);

if($result){

$json = json_decode($result,true);

if (!$json || isset($json['errcode'])) {

$errCode = $json['errcode'];

$errMsg = $json['errmsg'];

echo '上传失败';

}

// $result 为上传成功后返回的信息;

}else{

echo '上传失败';

}

网上有些信息,是将form-data 设为一个数组,这样是不对的,如下:

$data['media'] = "@/www/file/test.png";

$data['form-data '] =  array('filename'=>'test.png');

这种方法是错误,经过测试,请注意。

php微信上传图文素材,php使用curl 上传微信公共平台素材文件相关推荐

  1. php curl文件上传,在 php 中通过 CURL 上传文件

    1.使用 CURL 默认的方法$file = realpath('gif/1.gif'); //要上传的文件 $fields['f'] = '@'.$file; $ch = curl_init(); ...

  2. php 上传二进制图片,关于PHP CURL上传二进制流图片

    推荐:"PHP视频教程" 前言项目中的模块数据由PHP爬虫更新.检测到新图片需要上传到跨区域CDN回传服务器(静态资源服务器),服务器管理器只提供上传API 解决方案1.本地保存图 ...

  3. php上传图文,php+ajax实现异步上传图文功能详解

    这篇文章主要为大家详细介绍了php+ajax实现异步上传文件或图片功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文为大家分享了ajax异步上传文件或图片功能的具体代码,供大家参考,具体内容 ...

  4. java 微信群发多图文_能使用Java,在 微信公众号中实现同时给多个用户发送同一个图文消息吗?xml中的fromusername应该怎么填?...

    你调用接口都不监视接口返回的数据么,你这样调用接口会直接返回错误提示 touser就写一个openID 用for循环处理,脑壳别太死板了 public static  void sendall(Lis ...

  5. 微信上传图文消息素材40007,invalid media_id hint

    上传图文消息素材40007,invalid media_id hint,微信40007 >>>>>>>>>>>>>> ...

  6. 微信上传图文素材接口报41005错误解决方法

    微信上传图文素材接口报41005错误解决方法 参考文章: (1)微信上传图文素材接口报41005错误解决方法 (2)https://www.cnblogs.com/gy1010/p/6674529.h ...

  7. java上传图文消息_微信公众号开发之上传图文消息素材(十二)

    群发消息太重要了,公众号管理员需要定期通过公众号群发一些消息,用户通过推送的消息可以定期了解公众号的最新信息. 群发图文消息的过程如下: 首先,预先将图文消息中需要用到的图片,使用上传图文消息内图片接 ...

  8. 微信高级群发之一上传图文消息素材

    /** * uploadNews(List<MessageIn> messageInfos)上传图文消息素材,最多上传10个图文* accessToken:(ACCESS_TOKEN长期有 ...

  9. 微信公众号开发之上传图文消息素材(十二)

    群发消息太重要了,公众号管理员需要定期通过公众号群发一些消息,用户通过推送的消息可以定期了解公众号的最新信息. 群发图文消息的过程如下: 首先,预先将图文消息中需要用到的图片,使用上传图文消息内图片接 ...

  10. 微信公众号数据2019_如何制作微信公众号图文素材 微信公众号采集器好用吗

    现在有很多人都会通过微信公众号来发布文章.图片,这时候就需要使用一些编辑技巧了.下面拓途数据就和大家一同来看看如何制作微信公众号图文素材,微信公众号采集器好用吗? 微信公众号图文素材 如何制作微信公众 ...

最新文章

  1. lintcode :Remove Duplicates from Sorted Array II 删除排序数组中的重复数字 II
  2. OpenGL程序管道,可分离程序和着色器子例程的基本用法
  3. 史海峰:构建产业互联网金融系统的正确姿势
  4. [网络编程] - MIME格式详细介绍[转]
  5. python基本数据类型float_Python基本数据类型
  6. adb shell 命令之----pm
  7. 家庭的和谐稳定由什么决定?
  8. 大到创业,小到做一份副业
  9. [PyTorch] 安装
  10. shouldComponentUpdate 的作用
  11. 保存远程图片到本地 同时取得第一张图片并创建缩略图
  12. CSS3之box-shadow(阴影)和border属性
  13. 算法基础:基本数据结构的特点:队列 vs 栈
  14. Android裁剪系统
  15. CVPR2020 3D点云相关论文思想和方法总结
  16. gamma correct blurring
  17. Unity实时GI与烘焙GI
  18. 删除有外键关联的表报错,Cannot delete or update a parent row: a foreign key constraint fails
  19. windows server 2008r2 更新失败解决方案
  20. Linux下同型号USB相机端口绑定

热门文章

  1. 虚拟机ubuntu16.04下cheese 摄像头黑屏花屏问题
  2. Oblog 4.5-4.6 accessmssql getshell 0day
  3. 用来向服务器发送邮件的协议是,电子邮件协议中用于发送邮件的协议是
  4. c语言如何检测磁盘坏扇区,解决方案:如何检测和修复机械硬盘驱动器上的坏扇区?阅读本文后,您将知道...
  5. 【自用】图像算法、计算机视觉面试问题及答案1.0
  6. GO语言-panic和recover
  7. 终于把所有的 Python 库都整理出来啦
  8. 移动硬盘在电脑上显示为本地磁盘并且出现打不开的情况
  9. windows配置指定网段流量走虚拟专用网络
  10. Java利用NeteaseCloudMusicApi批量下载网易云音乐