php curl 實現文件上傳

/**
     * @param string $url 請求地址
     * @param string $filePath 上傳文件的絕對路徑
     * @param array $postParam 數據
     * @return array|bool|string
     */
    public function uploadFile($url, $filePath, $postParam)
    {
        if(version_compare(phpversion(),'5.5.0') >= 0 && class_exists('CURLFile')){
            $file = new CURLFile(realpath($filePath));
        }else{
            $file = '@'.$filePath;
        }
        $data = ["file" => $file];

        $param = array_merge($postParam, $data);
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_TIMEOUT, 5);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_MAXREDIRS, 3);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        $response = curl_exec($ch);
        if (curl_errno($ch) != 0)
            return curl_error($ch);

        curl_close($ch);
        if (!$response)
            return false;

        return $response;
    }


注意:PHP版本不一樣,支持的版本不同,所以要分情況寫明


示例:

 $url = 'http://localhost/ComposeApi/file.php';
 $file = 'C:/WWW/XXX/uploads/wx/thumb/20170609/3c40cd75a6e9d5c570fb662a098195ca.jpg';
 $result = $this->uploadFile($url,$file,[]);
 var_dump($result);


發佈了42 篇原創文章 · 獲贊 13 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章