【问题标题】:How to download IP2Location database with curl如何使用 curl 下载 IP2Location 数据库
【发布时间】:2020-10-14 19:04:54
【问题描述】:

我正在尝试使用他们提供的 curl 命令从 IP2Location 下载数据库。我已注册,所以我有一个有效的令牌。他们给出的命令是

    curl -o {LOCAL_FILE_NAME} "https://www.ip2location.com/download?token={DOWNLOAD_TOKEN}&file={DATABASE_CODE}"

这是我正在使用的代码,除了我的令牌:

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_URL, "https://www.ip2location.com/download?token={mytoken}&file={DB1LITEBIN}");

    $dbfile = curl_exec($curl);

    if (curl_errno($curl)) {
     echo 'err '.curl_errno($curl);
    }                  

    curl_close($curl);

    $file = 'db_download.bin';  
    $mode = 'w';

     if (($fp = fopen($file , $mode))) {    
       $fout = fwrite($fp, $dbfile);
       fclose($fp);  
    }  

脚本运行没有错误,但下载的文件只是他们网站的未找到页面。如果我在浏览器中使用 url,我会找不到相同的页面。有人可以指出我的错误吗?

【问题讨论】:

    标签: curl download ip2location


    【解决方案1】:

    请尝试以下操作。请注意,您将下载一个包含 bin 文件的 zip 文件。

    <?php
    
    //The resource that we want to download.
    $fileUrl = 'https://www.ip2location.com/download?token=XXXXXXXXXX&file=DB1LITEBIN';
    
    //The path & filename to save to.
    $saveTo = 'db_download.zip';
    
    //Open file handler.
    $fp = fopen($saveTo, 'w+');
    
    //If $fp is FALSE, something went wrong.
    if($fp === false){
        throw new Exception('Could not open: ' . $saveTo);
    }
    
    //Create a cURL handle.
    $ch = curl_init($fileUrl);
    
    //Pass our file handle to cURL.
    curl_setopt($ch, CURLOPT_FILE, $fp);
    
    //Timeout if the file doesn't download after 20 seconds.
    curl_setopt($ch, CURLOPT_TIMEOUT, 20);
    
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    
    //Execute the request.
    curl_exec($ch);
    
    //If there was an error, throw an Exception
    if(curl_errno($ch)){
        throw new Exception(curl_error($ch));
    }
    
    //Get the HTTP status code.
    $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    
    //Close the cURL handler.
    curl_close($ch);
    
    //Close the file handler.
    fclose($fp);
    
    if($statusCode == 200){
        echo 'Downloaded!';
    } else{
        echo "Status Code: " . $statusCode;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      • 2014-05-13
      • 2019-04-08
      • 1970-01-01
      • 2011-08-10
      • 2021-05-11
      相关资源
      最近更新 更多