2010-12-27 17 views
8

Accedo alle immagini da un altro sito Web. Ricevo "impossibile aprire lo stream: richiesta HTTP non riuscita! Errore HTTP/1.1 400 richiesta errata" durante la copia di alcune immagini (non tutte). ecco il mio codiceimpossibile aprire lo stream: richiesta HTTP non riuscita! Richiesta errata HTTP/1.1 400

$img=$_GET['img']; //another website url 
$file=$img; 

function getFileextension($file) { 
     return end(explode(".", $file)); 
} 
$fileext=getFileextension($file); 
if($fileext=='jpg' || $fileext=='gif' || $fileext=='jpeg' || $fileext=='png' || $fileext=='x-png' || $fileext=='pjpeg'){ 
if($img!=''){ 
$rand_variable1=rand(10000,100000); 
       $node_online_name1=$rand_variable1."image.".$fileext; 

       $s=copy($img,"images/".$node_online_name1); 

}

+0

È questo tutto il codice per riprodurre il problema? C'è un tutore ricurvo non chiuso alla fine. Inoltre, dove stai effettivamente inviando una richiesta a un server web? Quando ottieni l'errore, qual è la richiesta? – David

+0

sto copiando immagini da un altro sito. quando mai la funzione di copia viene eseguita, ricevo questo errore. $ s = Copia ($ img, "immagini /".$ node_online_name1); –

risposta

14

penso preg_replace rendere più senso migliore come che possa funzionare con tutte le versioni di PHP come ereg_replace non ha funzionato per me essere sconsigliato

$url = preg_replace("/ /", "%20", $url); 
4

L'unico problema che mi viene in mente è spazi essere nella url, molto probabilmente nel nome del file. Tutti gli spazi in un URL devono essere convertiti nella loro corretta codifica, che è% 20.

Se si dispone di un nome di file come questo:

"http://www.somewhere.com/images/img 1.jpg"

Si otterrebbe l'errore precedente, ma con questo:

"http://www.somewhere.com/images/img%201.jpg"

È dovrebbe avere problemi.

basta usare il str_replace() per sostituire gli spazi (" ") per il loro corretto codifica (" % 20")

Ecco come si presenta:

$url = str_replace(" ", "%20", $url); 

Per ulteriori informazioni sul controllo str_replace() out The PHP Manual.

+1

Meglio di str_replace chiamerebbe urlencode nella stringa "img 1" – Yuliy

10

Ho avuto lo stesso problema, ma era risolvere da

$url = str_replace(" ", "%20", $url); 

Grazie Cello_Guy per il posto.

Problemi correlati