首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用curl下载IP2Location数据库

如何使用curl下载IP2Location数据库
EN

Stack Overflow用户
提问于 2020-10-15 03:04:54
回答 1查看 176关注 0票数 0

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

代码语言:javascript
复制
    curl -o {LOCAL_FILE_NAME} "https://www.ip2location.com/download?token={DOWNLOAD_TOKEN}&file={DATABASE_CODE}"

以下是我使用的代码,除了我的令牌:

代码语言:javascript
复制
    $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,我会得到找不到的相同页面。有人能指出我的错误吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-15 16:42:12

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

代码语言:javascript
复制
<?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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64359953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档