2010-12-27 30 views
8

Uzyskuję dostęp do obrazów z innej strony internetowej. Otrzymuję komunikat "Nie udało się otworzyć strumienia: Błąd żądania HTTP! Błąd HTTP/1.1 400" podczas kopiowania "niektórych (nie wszystkich)" obrazów. tutaj jest mój kod.Nie można otworzyć strumienia: żądanie HTTP nie powiodło się! HTTP/1.1 400 Bad Request

$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

Czy ten cały kod do odtworzenia problemu? Na końcu jest niezamknięty nawias klamrowy. Ponadto, gdzie faktycznie wysyłasz zapytanie do serwera WWW? Kiedy pojawi się błąd, jaka jest prośba? – David

+0

Kopiuję obrazy z innej witryny. kiedy funkcja kopiowania jest wykonywana, otrzymuję ten błąd. $ s = copy ($ img, "images /".$ node_online_name1); –

Odpowiedz

14

myślę preg_replace uczynić bardziej lepsze poczucie jak to będzie działać z najnowszymi wersjami PHP jako ereg_replace nie pracował dla mnie jest przestarzała

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

Jedynym problemem mogę pomyśleć, to pomieszczenia, które jest w url, najprawdopodobniej w nazwie pliku. Wszystkie spacje w adresie URL należy przekonwertować na odpowiednie kodowanie, czyli% 20.

Jeśli masz nazwę pliku tak:

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

co można uzyskać powyższy błąd, ale z tym:

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

You powinien mieć problemy.

Wystarczy użyć str_replace() zastąpić spacji (” ") do ich prawidłowego kodowania (" % 20")

wygląda to tak:

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

Aby uzyskać więcej informacji na czeku str_replace() się The PHP Manual.

+1

Lepsze niż str_replace będzie wywoływać urlencode na ciągu "img 1" – Yuliy

10

miałem ten sam problem, ale to było rozwiązać przez

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

Dzięki Cello_Guy na stanowisko.

Powiązane problemy