suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Linux – PHP verwendet Curl, um Datei-Download-URL-Verbindungen zu verarbeiten, und es treten einige Probleme auf

  1. Die URL-Verbindung ist ein Download-Link für eine .gz-komprimierte Datei

  2. Im Allgemeinen verwendet die Methode, Curl zum Verarbeiten von Daten und zum Zurückgeben von Daten zu verwenden,

  3. Aber als es um die Verarbeitung heruntergeladener Dateien ging, war ich verwirrt.

  4. Bitte geben Sie mir einige Ratschläge von den Meistern, die Sie getroffen haben

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 Tage vor860

Antworte allen(2)Ich werde antworten

  • 给我你的怀抱

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

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

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

    Antwort
    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);
        }  

    Antwort
    0
  • StornierenAntwort