PHP使用curl请求实现post方式上传图片文件功能示例
网络编程 2021-07-05 08:24www.168986.cn编程入门
这篇文章主要介绍了PHP使用curl请求实现post方式上传图片文件功能,结合实例形式分析了php使用curl进行文件传输的相关设置与使用操作技巧,需要的朋友可以参考下
本文实例讲述了PHP使用curl请求实现post方式上传图片文件功能。分享给大家供大家参考,具体如下
在调用第三方api接口时,有时会遇到通过http协议上传图片,以下是一个微信公众平台新增永久素材的例子;
php代码
/ 使用curl函数 / $url = "https://api.weixin.qq./cgi-bin/material/add_material?aess_token=ACCESS_TOKEN&type=image"; $post_data = array( 'media' => '@bag03.jpg', ); $response = curl_http($url, 'POST', $post_data); $params = array(); $params = json_decode($response,true); if (isset($params['errcode'])) { echo "error:" . $params['errcode']; echo "msg :" . $params['errmsg']; exit; } var_dump( $params ); / http请求方式: 默认GET / function curl_http($url, $method="GET", $postfields){ $ch = curl_init(); curl_set($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_set($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_set($ch, CURLOPT_URL, $url); switch ($method) { case "POST": curl_set($ch, CURLOPT_POST, true); if (!empty($postfields)) { $hadFile = false; if (is_array($postfields) && isset($postfields['media'])) { / 支持文件上传 / if (class_exists('\CURLFile')) { curl_set($ch, CURLOPT_SAFE_UPLOAD, true); foreach ($postfields as $key => $value) { if (isPostHasFile($value)) { $postfields[$key] = new \CURLFile(realpath(ltrim($value, '@'))); $hadFile = true; } } } elseif (defined('CURLOPT_SAFE_UPLOAD')) { if (isPostHasFile($value)) { curl_set($ch, CURLOPT_SAFE_UPLOAD, false); $hadFile = true; } } } $tmpdatastr = (!$hadFile && is_array($postfields)) ? http_build_query($postfields) : $postfields; curl_set($ch, CURLOPT_POSTFIELDS, $tmpdatastr); } break; default: curl_set($ch, CURLOPT_CUSTOMREQUEST, $method); / //设置请求方式 / break; } $ssl = preg_match('/^https:\/\//i',$url) ? TRUE : FALSE; curl_set($ch, CURLOPT_URL, $url); if($ssl){ curl_set($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts curl_set($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在 } $response = curl_exec($ch); curl_close($ch); if(empty($response)){ exit("错误请求"); } return $response; } function isPostHasFile($value) { if (is_string($value) && strpos($value, '@') === 0 && is_file(realpath(ltrim($value, '@')))) { return true; } return false; }
也可以使用php内置的系统函数,如果使用过程中出现问题,建议查看是否启用相应的系统函数。
使用exec
系统函数
/ 使用exec函数 / $mand = 'curl -F media=@'.$filepath.' "https://api.weixin.qq./cgi-bin/media/upload?aess_token=ACCESS_TOKEN&type=image"'; $retval = array(); exec($mand, $retval, $status); $params = array(); $params = json_decode($retval[0],true); if ($status != 0) { $params = array( 'errcode' => '-100', 'errmsg' => '公众号服务出错,请联系管理员', ); } return $params;
使用system
系统函数
/ 使用system函数 / $mand = 'curl -F media=@'.$filepath.' "https://api.weixin.qq./cgi-bin/media/upload?aess_token=ACCESS_TOKEN&type=image"'; $retval = 1; $last_line = system($mand, $retval); $params = array(); $params = json_decode($last_line,true); if ($retval != 0) { if (isset($params['errcode'])) { $params = array( 'errcode' => '-100', 'errmsg' => '公众号服务出错,请联系管理员', ); } } return $params;
更多关于PHP相关内容感兴趣的读者可查看本站专题《》、《》、《》、《》、《》及《》
希望本文所述对大家PHP程序设计有所帮助。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程