2012-03-21 15 views
15

Come posso utilizzare php per scaricare un'immagine dall'URL (es .: https://www.google.com/images/srpr/logo3w.png) e salvarla? Questo è quello che ho trovato finora, mi dà un errore nella funzione 'file_put_contents'.Scarica l'immagine dall'URL utilizzando il codice php?

<form method="post" action=""> 
<textarea name="text" cols="60" rows="10"> 
</textarea><br/> 
<input type="submit" class="button" value="submit" /> 
</form> 

<?php 
    $img = "no image"; 
    if (isset($_POST['text'])) 
    { 
    $content = file_get_contents($_POST['text']); 
    $img_path = '/images/'; 
    file_put_contents($img_path, $content);  
    $img = "<img src=\"".$img_path."\"/>"; 
    } 
    echo $img; 
?> 

Mi dà l'errore:

[function.file-put-contents]: failed to open stream: No such file or directory in C:\wamp\www\img.php

La directory /images/ si trova nella stessa directory del file php ed è scrivibile.

+0

4 risposte in 1min !! Spero che i tuoi problemi siano risolti rapidamente. –

+0

non hai mai accettato nessuna risposta? Gentilmente upvote e accetta le risposte che ti hanno aiutato. –

+0

@Rohit Mi dispiace, ma come posso accettare le risposte? – Sarah

risposta

30

Non è possibile salvare l'immagine con il codice esistente perché non si fornisce un nome file. Hai bisogno di fare qualcosa di simile:

$filenameIn = $_POST['text']; 
$filenameOut = __DIR__ . '/images/' . basename($_POST['text']); 

$contentOrFalseOnFailure = file_get_contents($filenameIn); 
$byteCountOrFalseOnFailure = file_put_contents($filenameOut, $contentOrFalseOnFailure); 
+0

Grazie per la risposta. Ho già usato 'file_get_contents' nel codice. Funziona bene ma non posso salvare l'immagine. – Sarah

+0

@Sarah: il mio male, ho letto male il codice. Modificato la risposta nel frattempo. – Jon

+0

Questo è l'errore che ottengo: '[function.file-put-contents]: impossibile aprire lo stream: Nessun file o directory in C: \ wamp \ www \ img.php sulla riga 14' – Sarah

0

file_put_contents() richiede primo parametro di non essere il nome del file il percorso.

1

Qual'è il tuo errore? Ma tu hai il modo giusto di fare ciò che vuoi fare.

Basta fare attenzione nel codice, posso vedere file_put_contents($img_path, ma $img_path è un percorso di una cartella. Hai bisogno di scrivere qualcosa di simile:

esempio

$img_path="home/downloads/my_images"; 
file_put_contents($img_path."/flower.jpg"); 
+0

Grazie per la risposta! Quindi devo specificare il nome dell'immagine nel codice? – Sarah

+1

Sì, è possibile utilizzare $ _POST ['testo'] ma attenzione ai contenuti non validi. Devi disinfettare il tuo $ _POST e poi lavorarci sopra per ottenere il nome dell'immagine. Guarda [basename] (http://ca3.php.net/manual/fr/function.basename.php) può essere d'aiuto. – NeeL

+0

Guarda la risposta di Jon;) – NeeL

0
file_put_contents($img_path, $content); 

Fino a che stai mettendo a ?? Penso che tu abbia commesso un errore con get e put. o mancati per specificare il percorso completo incluso il nome del file e l'estensione

5

Se avete allow_url_fopen impostato a true:

 $url = 'http://example.com/image.php'; 
    $img = '/my/folder/flower.gif'; 
    file_put_contents($img, file_get_contents($url)); 

uso Else cURL:

 $ch = curl_init('http://example.com/image.php'); 
    $fp = fopen('/my/folder/flower.gif', 'wb'); 
    curl_setopt($ch, CURLOPT_FILE, $fp); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_exec($ch); 
    curl_close($ch); 
    fclose($fp); 
+0

Ho provato a usare cURL, non ha funzionato. Grazie comunque :) – Sarah

+0

controlla meteo hai abilitato il ricciolo .. – Pushparaj

+6

Questa risposta sembra familiare http://stackoverflow.com/questions/724391/saving-image-from-php-url – Dan

0

ho aggiunto una condizione di risposta accettata per verificare il tipo di immagine come segue,

dall'esempio precedente I show ho w per controllare le immagini png prima di scaricare i file e per altri tipi di contenuto è possibile trovare here.

Problemi correlati