php Curl循环从目录下载图像

时间:2014-02-04 17:02:18

标签: php loops curl

我想从api下载图片,当你访问这样的网址时,它会返回一种'.jpg'。

https://www.foo.com/getimage.php?id=??

我发现该脚本接受编码id,但仅使用base64_encode,所以我尝试这样做。

<?php
$ch = curl_init();
for($i = 1; $i <= 10; $i++) {
 $ch = curl_init();
 $id = base64_encode($i);
 curl_setopt($ch,CURLOPT_URL,"https://www.foo.com/getimage.php?id=$id");
 if(curl_exec($ch)===false){
   file_put_contents('downloads/' . base64_decode($id) . '.jpg', $ch);
 }
}
curl_close($ch);

你认为我的错误是什么。

1 个答案:

答案 0 :(得分:0)

这适用于HTTP连接。您需要一些其他设置才能使用HTTPS

代码中注释了一些重要的注释。

<?php

for($i = 1; $i <= 10; $i++) {
    $ch = curl_init();
    $id = base64_encode($i);
    curl_setopt($ch,CURLOPT_URL,"https://www.foo.com/getimage.php?id=$id");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return data as string

    // disable peer verification
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

    // disable host verification
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 

    // spoof a real browser client string
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
    $output = curl_exec($ch); // capture data into $output variable

    if( $output != false){
        file_put_contents('downloads/' . base64_decode($id) . '.jpg', $output );
    }
    curl_close($ch);
}
  

CURLOPT_RETURNTRANSFER

     

TRUE以将返回值作为字符串返回   curl_exec()而不是直接输出。

     

CURLOPT_SSL_VERIFYPEER

     

FALSE阻止cURL验证对等方的证书。备用   可以使用指定要验证的证书   可以使用CURLOPT_CAINFO选项或证书目录指定   CURLOPT_CAPATH选项。

     

CURLOPT_SSL_VERIFYPEER

     

FALSE停止cURL验证证书已发给   我们所连接的实体。

     

http://www.php.net/curl_setopt