2010-07-08 1 views
1

ОБНОВЛЕНО: Я упростил код (пытался)PHP CURL новичку и массив

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

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: \ inetp иь \ виртуальных доменов \ dehold.net \ httpdocs \ ripdw \ index.php на линии 15

Внимание: imagejpeg(): поставляется аргумент не является допустимым ресурсом изображения в C: \ Inetpub \ виртуальных доменов \ dehold. чистая \ httpdocs \ ripdw \ index.php на линии 16

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

+0

Что проблема? – Sjoerd

+0

любое сообщение об ошибке? – Artefacto

+0

Привет, оба! Я обновил вопрос :-) Это мой первый Q здесь, на стеке, поэтому я надеюсь, что вы несете со мной :) – kasperwf

ответ

0

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

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

+0

Я попробовал ваше предложение, но он не сохранил файл как JPEG, и я бы действительно как заставить мой кусок кода работать (и, надеюсь, понять, что я делаю неправильно) :-) Спасибо за ваш ввод – kasperwf

0

Вы должны попробовать 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

Это помогло с сохранением файла, но оно возвращает ошибку, если файл не существует и возвращается 404: ... Предупреждение: file_get_contents (http://pimpin.dk/jpeg/00x9.jpg) [function.file-get-contents]: не удалось открыть поток: HTTP-запрос не удался! HTTP/1.1 404 не найден в C: \ inetpub \ vhosts \ dehold.net \ httpdocs \ ripdw \ index.php в строке 22 ... Можно ли предотвратить это? – kasperwf

+0

Да, поставьте $ fileContents = file_get_contents ($ remoteImage); в попытке. Если это не удастся (в случае 404), то ваши инструкции по уловам будут обработаны, не бросая Предупреждение (если вы не сделаете исключение в своем улове, очевидно). – bPizzi

0

I f аконец получил его на работу, с помощью всех вас и немного шныряли :-)

Я закончил с использованием 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"; 
     } 
}