Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php Curl循环从目录下载图像_Php_Loops_Curl - Fatal编程技术网

php Curl循环从目录下载图像

php Curl循环从目录下载图像,php,loops,curl,Php,Loops,Curl,我想从一个api下载图像,当你像这样访问url时,它会返回一种“.jpg” https://www.foo.com/getimage.php?id=?? 我发现脚本接受编码的id,但只接受base64\u encode,所以我尝试这样做 <?php $ch = curl_init(); for($i = 1; $i <= 10; $i++) { $ch = curl_init(); $id = base64_encode($i); curl_setopt($ch,CURLOP

我想从一个api下载图像,当你像这样访问url时,它会返回一种“.jpg”

https://www.foo.com/getimage.php?id=??
我发现脚本接受编码的
id
,但只接受
base64\u 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);

这将与
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);
}

文件是否存在
下载/_ubase64_uu.jpg
?或者,它从来没有被写过?通常你需要一些额外的
CURLOPT
来进行
HTTPS
类型的连接。它永远不会被写入。你能试试
http://www.foo.com/
或者它需要SSL?它将我发送回
https
,当我访问
http
时,您也可以尝试,作为
curl
的替代方案,