Index.php 4.8 KB
<?php

namespace app\index\controller;

use app\common\controller\Frontend;

class Index extends Frontend
{

    protected $noNeedLogin = '*';
    protected $noNeedRight = '*';
    protected $layout = '';

    public function index()
    {
        $param = [
            'image_id'  => 'IMG_7072_res1',
            'timestamp' => '2019-08-19 16:23:13',
        ];
        $key       = 'gIt66BXV8v6n51m1JsWv';
        $signa      = '10F5AC11BE9C02ADB0E839DCF231E09D';
        $stringA = $this->ASCII($param);
        $stringSignTemp = $stringA.'&key='.$key;
        $sign = strtoupper(md5($stringSignTemp));
//        echo $sign.'<br/>';
//        echo $signa;
        $param['key'] = $key;
        $param['sign'] = $sign;
//        $param['files'] = file_get_contents($files);
        $url = 'http://49.234.158.29:80/get_img_info/';
        $files = './assets/img/test_shuguan.png';
        $file = realpath(ltrim($files, '@'));
        $item = new \CURLFile($file);
//        $item->setPostFilename('test_shuguan.png');
        $param['files'] = $item;
        var_dump($this->post($url,$param));
        return $this->view->fetch();
    }

    public function post($url, $data) {
        //初使化init方法
        $ch = curl_init();
        //指定URL
        curl_setopt($ch, CURLOPT_URL, $url);
        //设定请求后返回结果
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        //声明使用POST方式来进行发送
        curl_setopt($ch, CURLOPT_POST, 1);
        //发送什么数据呢
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        //忽略证书
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        //忽略header头信息
        curl_setopt($ch, CURLOPT_HEADER, 0);
        //设置超时时间
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        //发送请求
        $output = curl_exec($ch);
        //关闭curl
        curl_close($ch);
        //返回数据
        return $output;
    }

    public function http_post_buildData($url,$param){
        #手工组包
        $data = '';
        $id = uniqid();
        $this->buildData_fun($param,$id,$data);
        $data .=  "--".$id . "--";
        #手工组包

//        echo $data;
        $ch = curl_init();//初始化
        curl_setopt($ch,CURLOPT_URL,$url);//设置URL
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//设置允许https访问。忽略证书错误
        curl_setopt($ch,CURLOPT_POST,1);//设置get或者post
        curl_setopt($ch,CURLOPT_HTTPHEADER,[
            'Expect:  ',//PHP的坑 设置POST不发送 HTTP/1.1 100 Continue
            "Content-Type: multipart/form-data; boundary=".$id,
            "Content-Length: " . strlen($data)
        ]);//设置协议附加头head
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//提交POST内容
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);//在执行curl_exec返回结果
        $ret=curl_exec($ch);//执行
        curl_close($ch);
        return $ret;
    }

    public function buildData_fun($param,$id,&$data,&$path='',$iii=0){
        if(isset($param['filename'])){
            #正常时是这样传送file文件的
            #$file = curl_file_create(ROOT_PATH . '/public/154106488401000050.pdf',"application/octet-stream");

            $data .=  "--".$id . "\r\n"
                . 'Content-Disposition: form-data; name="'. $path.'"; filename="' . $param['filename'] . '"' . "\r\n"
                . 'Content-Type: application/octet-stream'."\r\n\r\n";

            $data .= $param['files'] . "\r\n";
            return ;
        }
        if(is_array($param) && $path != ''){
            $data .= "--" . $id . "\r\n". 'Content-Disposition: form-data; name="' .$path . "\"\r\n\r\n". $content . "\r\n";
        }
        foreach ($param as $name => $content) {
            if($path == ''){
                $path1 = $name;
            }else{
                $path1 = $path."[".$name."]";
            }
            if(is_array($content)) {
                $this->buildData_fun($content,$id,$data,$path1);
            } else{
                $data .= "--" . $id . "\r\n"
                    . 'Content-Disposition: form-data; name="' .$path1 . "\"\r\n\r\n"
                    . $content . "\r\n";
            }

        }
        return ;
    }

    //自定义ascii排序
    public function ASCII($params = array()){
        if(!empty($params)){
            $p =  ksort($params);
            if($p){
                $str = '';
                foreach ($params as $k=>$val){
                    $str .= $k .'=' . $val . '&';
                }
                $strs = rtrim($str, '&');
                return $strs;
            }
        }
        return '参数错误';
    }

    public function news()
    {
        $newslist = [];
        return jsonp(['newslist' => $newslist, 'new' => count($newslist), 'url' => 'https://www.fastadmin.net?ref=news']);
    }

}