Bildausgabe mit PHP

wewa

Mitglied
Hallo an alle!

Ihr kennt sicher http://picmirror.de.

Ich will genauso wie auf dieser Hompage auch auf meiner Page Bilder anzeigen lassen. Nicht über den direkten Pfad, sonder über ein PHP-Skript.

Ich hab mich schon ein wenig mit "readfile()" und headern herumgespielt. Aber es wird ein Download gestartet.
Wie kann ich es machen, dass der Browser das Bild anzeigt.
Mein Code sieht ca. so aus:
PHP:
$download = "stromdose.jpg";
    $filename = basename($download);
        header("Content-Type: img/jpeg");
        header("Content-Disposition: attachment; filename=\"$filename\"");
        header("Content-Transfer-Encoding: binary");
        header("Accept-Ranges: bytes");
        header('Content-Length: '.filesize("$download"));
        header("Last-Modified: " . gmdate("D, d M Y H:i:s", filemtime("$download")) . " GMT", true, 200);
    readfile($download);

Könnt ihr mir sagen was daran falsch ist?
 
Zuletzt bearbeitet:
Folgendes sollte ausreichen:
PHP:
$download = 'stromdose.jpg';
header('Content-Type: image/jpeg');
header('Content-Length: '.filesize($download)); 
header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($download)).' GMT');
readfile($download);
Allerdings sollte noch geprüft werden, ob die angeforderte Datei existiert und es überhaupt erlaubt ist, diese herunterzuladen.
 
Mein vorschlag:
$pfad muss halt angepasst werden....

PHP:
<?php
header ("Content-type: image/jpeg");
$im = ImageCreateFromJPEG($pfad);
ImageJPEG($im);
ImageDestroy($im);
?>
 
Viel zu umständlich. Der Webserver macht das doch auch nicht, wenn eine Grafikdatei direkt angefragt wird.
 
Zu Gumbo's Vorschlag:
Das funktioniert bei IE perfekt, aber Firefox macht trotzdem den Downloadmanager auf. Und wenn ich dann "Öffnen mit Firefox" klicke, dann wird das Bild als Text dargestellt (also Nonsense)

weiß wer wie man das verhindern kann

PS: alle anderen Vorschläge hab ich noch nicht versucht, mach ich aber noch
 
Zuletzt bearbeitet:
Dass es nicht funktioniert, bezweifle ich auch nicht. Ich kritisiere bloß, dass es umständlich ist und den Server unnötig belastet. Gerade die Grafikverarbeitung fordert viele Ressourcen. Und da ist jede Vermeidung von unnötigen Operationen gewünscht.
Wenn du auf den Fahrersitz eines Autos möchtest, steigst du doch wenn die Fahrertür offen steht auch nicht durch den Kofferraum ein.

Ergänze mal das Skript durch Folgendes:
PHP:
header('Content-Disposition: inline');
Vielleicht liegt es aber auch nur an deinen Einstellungen.
 
Okay, da geb ich dir recht. Ich verwende des in menem Skript auch ein wenig anders (zur erzeugung von Thumbs). Hatte es nur grad angepasst, an das was hier gefordert war. ;)
 
So, das hat jetzt funktioniert.
Jetzt funktioniert es in IE und Firefox.

So sieht jetzt mein Code aus:
PHP:
<?
$download = 'stromdose.jpg';
header('Content-Type: image/jpeg');
header('Content-Disposition: inline');
header('Content-Length: '.filesize($download));
header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($download)).' GMT');
readfile($download);
?>
 
Zuletzt bearbeitet:
Zurück