curl执行生成二维码,返回一堆乱码的处理

前言

最近在开发个微信小程序用到生成二维码的接口,curl执行生成二维码后,返回了一堆乱码,很是无奈,查遍资料最终得以解决。由于网上的资料过于散乱,不易查看,容易误导人等等原因,使我萌生了写下这篇文章的动机。
文章主要分两部分讲解,接口和后端。

接口

curl执行的时候加上这么个header:$header=header("Content-Type:image/jpg;charset=utf-8");(注:这里是单个header值的写法。如果是多个header值的话就要改成$header=array("Authorization:Basic","Content-Type:application/json");这种写法。注意单个header值不能用多个header值的写法。)

加好之后接口就可以正常返回二维码图片了。

后端

后端执行curl生成二维码的时候可不是像接口那样加个header就能正常返回二维码的图片了,需要用file_put_contents保存到文件夹,返回路径放到img才能正常展示。

示例代码:

              <?php $url=$_W['siteroot']."app/index.php?i=".$_W['uniacid']."&t=0&v=1.1.1&from=wxapp&c=entry&a=wxapp&do=CreateTicket&m=hotmallstore";
                                    $scene_id=123;
                                    $_data=array('data'=>json_encode(array(
                                            'action_name'=>'QR_LIMIT_SCENE',
                                            'action_info'=>array(
                                                    'scene'=>array(
                                                        'scene_id'=>$scene_id
                                                    )
                                            )
                                    )));
        
                                    $response = json_decode(ihttp_request($url,$_data)['content'],true);

                                    $ticket=!empty($response['ticket'])?$response['ticket']:"";
                                     $_url=$_W['siteroot']."app/index.php?i=".$_W['uniacid']."&t=0&v=1.1.1&from=wxapp&c=entry&a=wxapp&do=Showqrcode&m=hotmallstore&ticket=".$ticket;

                                     $code = ihttp_get($_url);

                                    $file_path = ATTACHMENT_ROOT.'images/qrcode/';
                                  
                                    if(!is_dir($file_path)) {
                                       $result = mkdir($file_path, 0777, true);
                                        if($result) {
                                            $path_arr = explode('/',$path);
                                            $path_str = '';
                                            foreach($path_arr as $val){
                                                $path_str .= $val.'/';
                                                $a = chmod($path_str,0777);
                                            }
                                        }
                                        $file_path=$result;
                                    }
                                    $name=$scene_id.'.png';
                                    $img_path='images/qrcode/'.$name;
                                    $filename = $file_path.$name;
                                    if(!file_exists($filename)){
                                        file_put_contents($filename, !empty($code['content'])?$code['content']:"");
                                    }

               ?>

           <img height="60px" width="60px" src="{media $img_path}"/>

相关资料

微信小程序二维码获取和保存 PHP
使用PHP进行微信开发时,生成二维码是乱码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值