搜索

首页  >  问答  >  正文

linux - php使用curl处理文件下载url连接,遇到了点问题

  1. 该url连接是一个.gz的压缩文件的下载链接

  2. 一般返回数据的使用curl处理数据的方法会使用

  3. 但是到处理下载文件的地方我懵圈了。

  4. 请遇到过的大神指教下

public static function curl($url, $params = false, $ispost = 0, $https = 0)
    {
        $httpInfo = array();
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        if ($https) {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
        }
        if ($ispost) {
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
            curl_setopt($ch, CURLOPT_URL, $url);
        } else {
            if ($params) {
                if (is_array($params)) {
                    $params = http_build_query($params);
                }
                curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
            } else {
                curl_setopt($ch, CURLOPT_URL, $url);
            }
        }

        $response = curl_exec($ch);

        if ($response === FALSE) {
            //echo "cURL Error: " . curl_error($ch);
            return false;
        }
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $httpInfo = array_merge($httpInfo, curl_getinfo($ch));
        curl_close($ch);
        return $response;
    }
習慣沉默習慣沉默2755 天前863

全部回复(2)我来回复

  • 给我你的怀抱

    给我你的怀抱2017-06-10 09:49:47

    一般返回数据的使用curl处理数据的方法会使用
    把返回的content用file_put_contents写入就行了

    file_put_contents(__DIR__.'/yourfilename.ext', $response);

    回复
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-10 09:49:47

    这么干

     //分离header与body  
        $header = '';  
        $body = '';  
        if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') {  
            $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE); //头信息size  
            $header = substr($response, 0, $headerSize);  
            $body = substr($response, $headerSize);  
        }  
       curl_close($ch);  
    
       //文件名  
        $arr = array(); $savePath = "/"; 
        if (preg_match('/filename="(.*?)"/', $header, $arr)) {  
      
            $file = date('Ym') . '/' . $arr[1];  
            $fullName = $savePath . '/' . $file;  
      
            //创建目录并设置权限  
            $basePath = dirname($fullName);  
            if (!file_exists($basePath)) {  
                @mkdir($basePath, 0777, true);  
                @chmod($basePath, 0777);  
            }  
           
            
            file_put_contents($fullName, $body);
        }  

    回复
    0
  • 取消回复