php使用curl新增微信临时素材(上传图片)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php使用curl新增微信临时素材(上传图片)相关的知识,希望对你有一定的参考价值。

<?php$APPID=‘‘;
$APPSECRET=‘‘;
$info=json_decode(file_get_contents("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$APPID&secret=$APPSECRET"));
//获取token
$access_token=$info->access_token;

/* 使用curl函数 */
    $url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=$access_token&type=image";;
    $post_data = array(
    ‘media‘ => ‘@bag03.png‘,
    );
    $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_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_URL, $url);
        switch ($method){
        case "POST":
            curl_setopt($ch, CURLOPT_POST, true);
            if (!empty($postfields)){
            $hadFile=false;
            if (is_array($postfields) && isset($postfields[‘media‘])) {
                /* 支持文件上传 */
                if (class_exists(‘CURLFile‘)){
                curl_setopt($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_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
                        $hadFile = true;
                    }
                }
            }
            $tmpdatastr = (!$hadFile && is_array($postfields)) ? http_build_query($postfields) : $postfields;
            curl_setopt($ch, CURLOPT_POSTFIELDS, $tmpdatastr);
            }
            break;
        default:
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); /* //设置请求方式 */
            break;
        }
        $ssl=preg_match(‘/^https:///i‘,$url) ? TRUE : FALSE;
        curl_setopt($ch, CURLOPT_URL, $url);
        if($ssl){
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
            curl_setopt($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;
    }
   

     //命令不会返回错误 如果返回空  2>&1 输出报错信息  如果乱码就是用 header("content-type:text/html;charset=gbk");  curl下载地址  https://curl.haxx.se/download.html

    $filepath=‘./bag03.png‘;
     /* 使用exec函数 */
    $command = ‘curl -F [email protected]‘.$filepath.‘ "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=‘.$access_token.‘&type=image"‘;
    $retval = array();
    exec($command, $retval, $status);
    $params = array();
    $params = json_decode($retval[0],true);
    if ($status != 0) {
    $params = array(
        ‘errcode‘  => ‘-100‘,
        ‘errmsg‘  => ‘公众号服务出错,请联系管理员‘,
    );
    }
    return $params;

    /* 使用system函数 */        
    $command = ‘curl -F [email protected]‘.$filepath.‘ "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=‘.$access_token.‘&type=image" 2>&1‘;
    $retval = 1;

    $last_line = system($command, $retval);
    $params = array();
    $params = json_decode($last_line,true);
    if ($retval != 0) {
    if (isset($params[‘errcode‘])) {
        $params = array(
        ‘errcode‘  => ‘-100‘,
        ‘errmsg‘  => ‘公众号服务出错,请联系管理员‘,
        );
    }
    }
    return $command;

 

以上是关于php使用curl新增微信临时素材(上传图片)的主要内容,如果未能解决你的问题,请参考以下文章

PHP使用curl请求实现post方式上传图片文件功能示例

微信公众号开发---上传临时素材到公众号遇到的问题:"errcode":41005,"errmsg":"media data missing

微信公众平台开发—上传永久素材(图片)

php微信上传永久图片素材求代码

微信企业号-上传获取临时素材文件

PHP 5.6 微信上传临时素材的坑