我是靠谱客的博主 明理中心,最近开发中收集的这篇文章主要介绍PHP通过CURL上传图片(微信公众号上传素材),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这里以微信公众号素材管理为例。

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获取页面内容或提交数据,有时候希望返回的内容作为变量储存,
        //而不是直接输出。这个时候就必需设置curlCURLOPT_RETURNTRANSFER选项为1true
curl_setopt($ch , CURLOPT_POST, 1);
        //发送一个POST请求
curl_setopt($ch , CURLOPT_POSTFIELDS, $file_data);
        //传递一个关联数组,生成multipart/form-dataPOST请求
$output = curl_exec($ch);//发送请求获取结果
curl_close($ch);//关闭会话
return $output;//返回结果

返回结果:

{"media_id":"Y-wN-hbQ42QYeA5-956YrLgmGDTnl4bWqJr6AjsgoGk",

"url":"http://mmbiz.qpic.cn/mmbiz_jpg/gyNXEoR9bg5UfM2wEFcz3tYO4a0adXo8Y4treMlnStHt8E0mDZazhxmGiamfU06tDkzCt55YR681Npd9sasH0xg/0?wx_fmt=jpeg"

}



最后

以上就是明理中心为你收集整理的PHP通过CURL上传图片(微信公众号上传素材)的全部内容,希望文章能够帮你解决PHP通过CURL上传图片(微信公众号上传素材)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部