PHP通过CURL上传图片(微信公众号上传素材)
2020-01-13 21:28
190 查看
这里以微信公众号素材管理为例。
PHP的cURL支持通过给CURL_POSTFIELDS传递关联数组(而不是字符串)来生成multipart/form-data的POST请求。
传统上,PHP的cURL支持通过在数组数据中,使用“@+文件全路径”的语法附加文件,供cURL读取上传。这与命令行直接调用cURL程序的语法是一致的:
$type = "image"; //声明上传的素材类型,这里为image $token = get_access_token();//调用接口需要获取token,这里使用一个封装好的调取access_token的函数 $url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=".$token."&type=".$type; //这里是请求地址,token和素材类型通过get方式传递 $file_path = dirname(__FILE__)."/pro.jpg"; //这里声明文件的路径,使用绝对路径 $file_data = array('media' => '@'.$file_path); //传递的数组,方式一:使用'@'符号加上文件的绝对路径来指引文件。这种方式适合PHP5.5之前的版本, $file_data = array("media" => new \CURLFile($file_path)); //传递的数组,方式二:从PHP5.5版本以后,引入了新的CURLFile 类来指向文件,参数传入的也是绝对路径 $ch = curl_init(); //初始化一个新的会话,返回一个cURL句柄,供curl_setopt(), curl_exec()和curl_close() 函数使用。 curl_setopt($ch , CURLOPT_URL , $url); //需要获取的URL地址,也可以在curl_init()函数中设置。 curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1); //使用PHP curl获取页面内容或提交数据,有时候希望返回的内容作为变量储存, //而不是直接输出。这个时候就必需设置curl的CURLOPT_RETURNTRANSFER选项为1或true curl_setopt($ch , CURLOPT_POST, 1); //发送一个POST请求 curl_setopt($ch , CURLOPT_POSTFIELDS, $file_data); //传递一个关联数组,生成multipart/form-data的POST请求 $output = curl_exec($ch);//发送请求获取结果 curl_close($ch);//关闭会话 return $output;//返回结果
返回结果:
{"media_id":"***", "url":"http:***" }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- PHP通过CURL上传图片(微信公众号上传素材)
- php 通过curl上传图片
- PHP5.6通过CURL上传图片@符无效的兼容问题
- PHP5.6通过CURL上传图片@符无效的兼容问题
- php通过curl下载远程图片实例
- PHP实现上传图片素材获取mediaID
- php 通过curl上传文件
- 在php中通过curl上传文件
- 在 php 中通过 CURL 上传文件
- PHP通过fwrite函数和curl修改图片的MD5值
- PHP Curl post上传图片版本不兼容而引起服务器端接收不到图片问题。
- php 微信公众号上传永久素材
- PHP服务端如何通过程序将图上传到指定的图片服务器与图片服务器的优化方案
- 如何通过表单上传图片数据,PHP后端获取并且保存文件数据
- PHP中使用CURL发送get/post请求上传图片批处理功能
- PHP 通过CURL上传文件
- php7 curl上传图片
- PHP5.6之后curl上传图片
- 使用localResizeIMG插件上传图片到七牛云返回链接通过PHP进行保存
- 详解PHP素材图片上传、下载功能