Bild via Parameter anzeigen?

Funjoy

Erfahrenes Mitglied
Hallo,

Ich habe ein kleines Problem :rolleyes:
Undzwar habe ich mir ein Upload system Programmiert und will nun ne art vorschau funktion mit einbauen d.h. die Dateien die Hochgeladen wurden stehen in einer Datenbank und werden dort ausgelesen nun will ich das wenn jemand auf den Datensatz X Klickt das er mir die Datei anzeigt wenn es ein Bild ist so. Ich habe schon alles Programmiert doch wenn ich jetzt mir ein Hochgeladenes Bild anschauen will kommt folgende Fehlermeldung
Die Grafik "http://localhost/www.phpline.de/admin/attachment.php?method=display&id=8" kann nicht angezeigt werden, weil sie Fehler enthält..

Mein Code für die Bilder zum ansehen schaut so aus:
PHP:
<?php 
...
header("Content-type: image/".FileID($attachment['filename']));  
...
?>

was ist daran Falsch?

MfG Funjoy
 
es liefert mir den Datei Typ zurück also z.B. die Datei heist Bild.gif dann wird mir gif zurück gegeben und bei Bild.jpg halt jpg :)

hier die Funktion FileID:
PHP:
<?php
function FileID($str)
  {
	$array = explode(".",$str);  
	$int = count($array) -1;
	return $array[$int];
}
?>

Ps. Habe vorhin vergessen das die Fehlermeldung vom FireFox 1.0 Browser kommt!

MfG Funjoy
 
Die Erweiterung einer Datei sagt nicht unbedingt etwas über den tatsächlichen Datentyp aus. So ließen sich z. B. Grafiken als .txt-Dateien speichern. Nach Außen würde solch eine Datei erst einmal als Textdatei erscheinen, doch vom Inhalt wäre sie noch eine Grafik.


Was du benötigst ist die Angabe des korrekten Medientyps. Diese werden beim Hochladen einer Datei vom Webserver mit ermittelt und sind in einem anschließenden verarbeitenden PHP-Script in der vordefinierten Variable $_FILE. (Siehe dazu Steuerung von Dateiuploads)

Wenn du den Medientypen zusammen mit den übrigen Daten der Dateien in der Datenbank speicherst kannst du die Dateien später auch wieder mit den korrekten Medientypenbezeichnern ausliefern.
 
ja diese Idee werde ich übernehmen aber da ich das jetzt Lokal getestet habe habe ich ja eine echte Grafik Datei vom Typ jpg genommen und diese kann er mir auch nicht anzeigen ich denke mal das das auch nix ändern wird wenn ich dann den MIME Typ ausgebe da es ja im Prinzip das gleiche ist.

MfG Funjoy
 
[…]ich denke mal das das auch nix ändern wird wenn ich dann den MIME Typ ausgebe da es ja im Prinzip das gleiche ist.
Eben nicht, denn wie ich bereits erwähnte sagt die Erweiterung einer Datei nicht zwingend etwas über den Inhalt aus.

Das fast schon beste Beispiel hast du selbst gegeben: Der Dateiname lautet Beispiel.jpg. Deiner Annahme zufolge wäre der Medientyp nun image/jpg, doch ein kurzer Blick in die von mir erwähnte Referenz zu Medientypen zeigt schnell, dass es keinen Medientypen mit diesem Bezeichner gibt. Denn der Medientypbezeichner für Dateien mit der Erweiterung *.jpg (nehmen wir mal an, dass in diesem Fall von der Erweiterung auf den Inhalt geschlossen werden kann) lautet image/jpeg.
 
jut haste recht ;-)

so habe es einmal so Probiert:
PHP:
<?php
...
header("Content-Disposition: filename=\"".$attachment['filename']."\"\r\n");
header("Content-type: ".$attachment['mimetype']);  
...
?>

Funtioniert leider nicht :(

Dann habe ich es mal anders Probiert undzwar so:
PHP:
<?php
...
header("Content-Disposition: filename=\"".$attachment['filename']."\"\r\n");
$image = imagecreatefromjpeg($filepath); 
header("Content-type: ".$attachment['mimetype']);  
imagejpeg($image);
...
?>

Da gibt er mir zwar das Bild zurück aber ich müsste für jeden Datei Typ ne Funktion schreiben gibs da auch ne einfache Lösung?

MfG Funjoy
 
So hat sich erledigt habe das wichtigste vergessen undzwar readfile() :rolleyes:

So sieht es dann richtig aus:
PHP:
<?php 
...
header("Content-Disposition: filename=\"".$attachment['filename']."\"");
header("Content-type: ".$attachment['mimetype']);  
readfile($filepath);
...
?>

MfG Funjoy
 
Zurück