2010-07-08 4 views
1

MIS À JOUR: J'ai simplifié le code (essayé)débutant PHP CURL et tableau

Je suis en train de télécharger une série d'images comme défini dans un tableau, mais quelque chose est manifestement pas droit:

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 />"; 
     } 
} 

Je reçois les erreurs suivantes:

Attention: imagecreatefromstring() [function.imagecreatefromstring]: chaîne vide ou une image non valide dans C: \ inetp ub \ vhosts \ dehold.net \ httpdocs \ ripdw \ index.php en ligne 15

Attention: imagejpeg(): fourni l'argument n'est pas une ressource d'image valide dans C: \ inetpub \ vhosts \ DEHOLD. net \ httpdocs \ ripdw \ index.php sur la ligne 16

Warning: getimagesize (.009.jpg) [function.getimagesize]: failed to open stream : Aucun fichier ou répertoire dans C: \ inetpub \ vhosts \ dehold.net \ httpdocs \ ripdw \ index.php sur la ligne 26 *

+0

Quel est le problème? – Sjoerd

+0

un message d'erreur? – Artefacto

+0

Salut les deux! J'ai mis à jour la question :-) Ceci est mon premier Q ici sur la pile, donc j'espère que vous supporter avec moi :) – kasperwf

Répondre

0

essayer ceci:

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 

// Extrait de: http://www.weberdev.com/get_example-4009.html

ou file_get_contents

+0

J'ai essayé votre suggestion, mais il n'a pas enregistré le fichier en format JPEG, et je voudrais vraiment aime faire mon morceau de code pour travailler (et j'espère comprendre ce que je fais mal) :-) Merci pour votre contribution – kasperwf

0

Vous devriez essayer file_get_contents en remplacement de CURL (plus simple, mais il fait le travail):

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

Cela a aidé à sauver le fichier, mais il renvoie une erreur si le fichier n'existe pas et un 404 est renvoyé: ... Avertissement: file_get_contents (http://pimpin.dk/jpeg/00x9.jpg) [function.file-get-contents]: échec de l'ouverture du flux: requête HTTP a échoué! HTTP/1.1 404 Introuvable dans C: \ inetpub \ vhosts \ dehold.net \ httpdocs \ ripdw \ index.php à la ligne 22 ... Est-il possible de l'empêcher? – kasperwf

+0

Ouais, mettez votre $ fileContents = file_get_contents ($ remoteImage); dans l'essai. En cas d'échec (dans le cas d'un 404), vos instructions de capture seront traitées sans lancer d'avertissement (sauf si vous lancez une exception dans votre capture, évidemment). – bPizzi

0

I f nfin, il se met au travail, avec l'aide de vous tous et un peu de fouiner :-)

je me suis retrouvé à l'aide 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"; 
     } 
}