PHP новичок CURL и массив - PullRequest
1 голос
/ 08 июля 2010

ОБНОВЛЕНО: я упростил код (пытался)

Я пытаюсь загрузить серию изображений, как установлено в массиве, но что-то явно не так:

function savePhoto($remoteImage,$fname) {
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_NOBODY, true);
    curl_setopt ($ch, CURLOPT_URL, $remoteImage);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0);
    $fileContents = curl_exec($ch);
    $retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if($retcode==200) {
        $newImg = imagecreatefromstring($fileContents);
        imagejpeg($newImg, ".{$fname}.jpg",100);
    }
    return $retcode;
}

$filesToGet = array('009');
$filesToPrint = array();

foreach ($filesToGet as $file) {
        if(savePhoto('http://pimpin.dk/jpeg/'.$file.'.jpg',$file)==200) {
            $size = getimagesize(".".$file.".jpg");
            echo $size[0] . " * " . $size[1] . "<br />";
        }
}

Я получаю следующие ошибки:

Предупреждение: imagecreatefromstring () [function.imagecreatefromstring]: пустая строка или недопустимое изображение в C: \ inetpub \ vhosts \ dehold.net \ httpdocs \ ripdw \index.php в строке 15

Предупреждение: imagejpeg (): предоставленный аргумент не является допустимым ресурсом изображения в C: \ inetpub \ vhosts \ dehold.net \ httpdocs \ ripdw \ index.php в строке 16

Предупреждение: getimagesize (.009.jpg) [function.getimagesize]: не удалось открыть поток: нет такого файла или каталога в C: \ inetpub \ vhosts \ dehold.net \ httpdocs \ ripdw \ index.php в строке26 *

Ответы [ 3 ]

0 голосов
/ 08 июля 2010

Вы должны попробовать file_get_contents вместо CURL (проще, но он делает свою работу):

 function savePhoto($remoteImage,$fname) {        
      $fileContents = file_get_contents($remoteImage);        
      try {        
        $newImg = imagecreatefromstring($fileContents);
        imagejpeg($newImg, ".{$fname}.jpg",100);        
      } catch (Exception $e) {        
        //what to do if the url is invalid        
      } 
}
0 голосов
/ 09 июля 2010

Я наконец-то заставил его работать, с помощью всех вас и немного понюхал: -)

Я использовал CURL:

function savePhoto($remoteImage,$fname) {
    $ch = curl_init();

    curl_setopt ($ch, CURLOPT_URL, $remoteImage);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0);
    $fileContents = curl_exec($ch);

    $retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    curl_close($ch);
    if($retcode == 200) {
        $newImg = imagecreatefromstring($fileContents);
        imagejpeg($newImg, $fname.".jpg",100);
    }

    return $retcode;
}


$website = "http://www.pimpin.dk/jpeg";
$filesToGet = array('009');
$filesToPrint = array();

foreach ($filesToGet as $file) {
        if(savePhoto("$website/$file.jpg",$file)==200) {
            $size = getimagesize($file.".jpg");
            echo $size[0] . " * " . $size[1] . "<br />";
        } else {
            echo "File wasn't found";
        }
}
0 голосов
/ 08 июля 2010

попробуйте вместо этого:

function get_file1($file, $local_path, $newfilename)
{
    $err_msg = '';
    echo "<br>Attempting message download for $file<br>";
    $out = fopen($newfilename, 'wb');
    if ($out == FALSE){
      print "File not opened<br>";
      exit;
    }

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_FILE, $out);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_URL, $file);

    curl_exec($ch);
    echo "<br>Error is : ".curl_error ( $ch);

    curl_close($ch);
    //fclose($handle);

}//end function 

// взято из: http://www.weberdev.com/get_example-4009.html

или file_get_contents

...