Modul zum Downloaden von Bildern
am 25.06.2010 - 09:14 Uhr in
Hi,
ich schreibe grade ein Modul, mit dem man Bilder über einen Download-Diaglog herunterladen kann, also ohne das Bild im Browser zu öffnen. Nur leider scheint der Download nicht ganz zu klappen. Der Download-Dialog öffnet sich zwar, aber das Bild wird nicht heruntergeladen wenn ich auf speichern klicke. Hier mal der Code:
<?php
function my_gallery_menu()
{
$items = array();
$items['meine-seite/bilder/%'] = array(
'title' => 'Meine Bilder Gallerie',
'page callback' => 'my_gallery_download_img',
'page arguments' => array(2),
'access arguments' => array('view my gallery'),
'type' => MENU_CALLBACK,
);
return $items;
}
function my_gallery_download_img($arg)
{
$datei = '/sites/default/files/myimg/'.$arg;
$akt_type ="image/jpeg";
$size = filesize($datei);
header("Content-Type: ".$akt_type);
header("Content-disposition: attachment; filename=".$datei);
header("Pragma: no-cache");
header("Expires: 0");
header("Content-length: ".$size);
readfile($datei);
}
?>
Der Download wird dann wie in folgender Zeile verlinkt:
<?php
...
$page_content .= "<a href='".$base_path."meine-seite/bilder/".$datei."'>Download</a>";
...
?>
Bei Versuch das Bild herunterzuladen bekomm ich dann folgende Fehlermeldungen
warning: filesize() [function.filesize]: stat failed for /sites/default/ ....
warning: readfile(/sites/default/files/myimg/Bild0001.JPG) [function.readfile]: failed to open stream: No such file or directory
was ja eigentlich darauf hindeutet, dass der Pfad zum Bild falsch ist. Lass ich mir aber den Pfad des Bildes in der Funktion my_gallery_download_img ausgeben oder folge dem Pfad des Bildes in der Fehlermeldung, so lande ich bei dem Bild. Der Pfad it also ok.
Jemand ne Idee wo der Fehler liegen könnte?
- Anmelden oder Registrieren um Kommentare zu schreiben
Linux und seine Verzeichnisstruktur ;)
am 28.06.2010 - 18:39 Uhr
Hallo,
der Fehler wird darin liegen dass, du readfile() den falschen Pfad mitgibst ;)
du sagst die Datei liegt unter '/sites/default/files/myimg/Bild0001.JPG' , was ich mal schwer bezweifle.
Du kannst die Datei vermutlich mittels http://deinedomai.tld/sites/default/files/myimg/Bild0001.JPG aufrufen.
Und genau hier kommt dein Denkfehler ins Spiel.
Durch das erste / zwingst du readfile dazu die Datei vom root-Ordner des Servers aus zu suchen, was der funktion nicht gelingt (deswegen gibt bereits filesize einen Fehler aus)
Die Datei liegt aber in irgendwas der art '/var/www/meinprojekt/public_html/sites/default/files/myimg/Bild0001.JPG', wobei '/var/www/meinprojekt/public_html' der Pfad auf dem Server ist, auf den deine Domain zeigt.
(wo du dich gerade befindest vereichnisstechnisch kannst du z.B. mit getcwd() herausfinden.