Seite 1 von 1
php fpassthru
Verfasst: 23.01.2011, 03:49
von lois69
habe folgendes programm zum externen auslesen von images
<?
ob_start();
$fp = fopen("
https://images.partners.agoda.com/hotel ... 177577.jpg", "rb");
fpassthru($fp);
fclose($fp);
$file = ob_get_contents();
ob_end_clean();
$fp = fopen("./fox.jpg", "wb+");
fwrite($fp, $file);
fclose($fp);
?>
aber der inhalt der geschriebenen datei ist immer 0 aber sie wird angelegt? wer nen tip? intern funktioniert es auch wenn ich die grafik absolut anspreche.
Verfasst: 23.01.2011, 10:24
von Michael
Hi,
versuche es mal so.
Gruß
Michael
<?
header("Content-Type: image/jpg");
$url = "
https://images.partners.agoda.com/hotel ... 177577.jpg";
$image = file_get_contents($url);
echo $image;
?>
Verfasst: 23.01.2011, 10:26
von Alex L.
Hast du zunächst einmal gecheckt ob fopen() auf deinem Server mit externen Adressen funktioniert? Bei vielen Hostern ist fopen() entsprechend beschnitten oder gar deaktiviert.
Verfasst: 23.01.2011, 10:39
von lois69
@alex
auf meinem geht es aber versuche es ja ueber agoda
@michael
danke probiere es gleich mal
Verfasst: 23.01.2011, 11:10
von lois69
@michael
er gibt mir nur den dateinamen des aufrufenden prpgrammes zurueck auch wenn ich es mit fopen mache
Verfasst: 23.01.2011, 13:13
von Melegrian
Vielleicht hilft Dir folgendes weiter:
Code: Alles auswählen
// Die Content-Type-Kopfzeile senden, in diesem Fall image/jpeg
header('Content-type: image/jpeg');
// Das Bild ausgeben
imagejpeg($im);
// Den Speicher freigeben
imagedestroy($im);
Oder:
Code: Alles auswählen
// Das Bild als 'simpletext.jpg' speichern
imagejpeg($im, 'simpletext.jpg');
// Den Speicher freigeben
imagedestroy($im);
https://de.php.net/manual/de/function.imagejpeg.php
Verfasst: 23.01.2011, 13:42
von Melegrian
So wird das Bild bei mir angezeigt und abgespeichert. Ohne echo $file wird es bei mir nicht angezeigt, nur abgespeichert.
Code: Alles auswählen
<?php
ob_start();
$fp = fopen("http://images.partners.agoda.com/hotels/206452/Main/Main_RoomFac_206452_3177577.jpg", "rb");
fpassthru($fp);
fclose($fp);
$file = ob_get_contents();
ob_end_clean();
echo $file;
$fp = fopen("./fox.jpg", "wb+");
fwrite($fp, $file);
fclose($fp);
?>
Verfasst: 24.01.2011, 03:54
von lois69
@melegrian
das bild wird bei dir gespeichert?
bei einem meinen eigenen server ebenfalls aber bei agoda.com
Warning: fopen(
https://images.partners.agoda.com/hotel ... 177577.jpg) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /home/.sites/116/site1677/web/hotels/test0.php on line 3
Warning: fpassthru() expects parameter 1 to be resource, boolean given in /home/.sites/116/site1677/web/hotels/test0.php on line 5
Warning: fclose() expects parameter 1 to be resource, boolean given in /home/.sites/116/site1677/web/hotels/test0.php on line 6
das heisst die haben den zugriff eingeschränkt. aber warum bei dir nicht?
Verfasst: 24.01.2011, 06:10
von Melegrian
Da war ich gestern etwas zu vorlaut. Hatte die Scriptschnipsel nur schnell mit xampp getestet, wo das Bild sauber angezeigt und abgespeichert wurde. Heute habe ich erst einen Test bei all-inkl und bei Loswebos gemacht. Sauber gespeichert wird das Bild bei beiden Hostern ohne Probleme, angezeigt wird hingegen jeweils nur der Bildcode. Also, Speicherung - OK, direkte Ausgabe an den Bildschirm - Nein. Ja, das wird wohl an den Servereinstellungen liegen.
Verfasst: 24.01.2011, 06:19
von SloMo
Du musst dem Browser natürlich sagen, was für ein Content-Type das ist. Sonst wird es nicht als Bild interpretiert, sondern als Text ausgegeben. Wie Michael oben schon meinte: header("Content-Type: image/jpg") ganz am Anfang des Skripts.
Verfasst: 24.01.2011, 06:54
von Melegrian
Gut, prima, wieder ein wenig dazu gelernt, jetzt wird das Bild bei beiden Hostern angezeigt und gespeichert.
Verfasst: 24.01.2011, 10:30
von lois69
alles klar der provider hat fopen freigegeben aber die domains die nicht bei ihhm liegen gesperrt