Hallo an alle Forenmitglieder,
ich bin neu hier im Forum und würde gerne mein Problem hier beschreiben. Es geht um einen einfachen Dateidownload von Bildern und anderen Inhalten. Ich habe einige Beiträge hier schon gelesen, komme aber nicht ein Stück weiter.
Ich entwickle per "localhost" am eigenen System und dort funktioniert der Download einwandfrei. Wenn ich die Templates (.tpl) und die download.php aber uploade, klappt der download nicht mehr. Hier mal einige grundlegende Daten zum System:
Pfad des localhost zum Scriptverzeichnis: K:\xampp\htdocs\domain\download
Pfad des localhost zum Downloadverzeichnis: K:\xampp\htdocs\domain\download\pictures
Am Server gilt hierbei: ../domain/web2/download bzw. ../domain/web2/download/pictures
Ich arbeite in den Scripts mit relativen Pfadangaben (../Verzeichnis). Der folgende Quelltext aus der download.php lädt die Bilddatei aus dem o.g. Verzeichnis und das klappt auch:
Die beiden Parameter ( $path, $file) setze ich zuvor wie folgt:
Der Aufruf-Link ist dabei wie folgt gestaltet:
%mainpfad%download/download.php%linkext%&lid=111&dld=bdm_01.jpg
Da ich viel mit Templates arbeite ist alles auf relative Pfadangaben gesetzt und klappt local wie am Server einwandfrei. Nach dem Upload des Scripts (download.php) und den Templates klappt alles bis auf den Download. Ich bekomme imer den Fehler, dass die Datei nicht gefunden wird bzw. das Directory nicht existiert.
Selbst wenn ich dem Script die kompletten Serverpfade bis zur Datei "hardcode", will der download nicht klappen. Seite Tagen spiele ich mich auch mit den Server-Variablen "DOCUMENT_ROOT", SCRPIT-NAME" und der Funktion "getcwd()". Es klappt aber immer noch nicht.
Ich bräuchte dringend eure Hilfe, da ich hier echt feststecke. Möglicherweise übersehe ich irgend etwas einfaches. Gut möglich dass ich auch schon Code-blind bin.
Lieben Dank an euch und ich bin für jeden Hinweis dankbar.
Liebe Grüße
Volkmar
ich bin neu hier im Forum und würde gerne mein Problem hier beschreiben. Es geht um einen einfachen Dateidownload von Bildern und anderen Inhalten. Ich habe einige Beiträge hier schon gelesen, komme aber nicht ein Stück weiter.
Ich entwickle per "localhost" am eigenen System und dort funktioniert der Download einwandfrei. Wenn ich die Templates (.tpl) und die download.php aber uploade, klappt der download nicht mehr. Hier mal einige grundlegende Daten zum System:
Pfad des localhost zum Scriptverzeichnis: K:\xampp\htdocs\domain\download
Pfad des localhost zum Downloadverzeichnis: K:\xampp\htdocs\domain\download\pictures
Am Server gilt hierbei: ../domain/web2/download bzw. ../domain/web2/download/pictures
Ich arbeite in den Scripts mit relativen Pfadangaben (../Verzeichnis). Der folgende Quelltext aus der download.php lädt die Bilddatei aus dem o.g. Verzeichnis und das klappt auch:
PHP-Code:
// Funktion führt Download der Datei aus -----------------------------
function makeDownload($path, $file){
// Pfad zusammensetzen -------------------------------------------
$fullpath = $path.$file;
// Datei lesend öffnen -------------------------------------------
if ($fd = fopen ($fullpath, "r")) {
$fsize = filesize($fullpath);
$path_parts = pathinfo($fullpath);
$ext = strtolower($path_parts["extension"]);
switch ($ext) {
// Bilder JPG/JPEG ---------------------------------------
case "jpg":
header("Content-type: image/jpeg");
header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\"");
break;
// Dokument PDF ------------------------------------------
case "pdf":
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\"");
break;
// Audio OGG ---------------------------------------------
case "ogg":
header("Content-type: audio/ogg");
header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\"");
break;
default;
header("Content-type: application/octet-stream");
header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
}
// Zusätzliche Dateiangaben ----------------------------------
header("Content-length: $fsize");
header("Cache-control: private");
// Datei Blockweise in Puffer einlesen und ausgeben ----------
while(!feof($fd)) {
$buffer = fread($fd, 2048);
echo $buffer;
}
$result = true;
} else {
$result = false;
}
// Datei schließen und beenden -----------------------------------
fclose ($fd);
return $result;
}
PHP-Code:
if ($isloggedin){
// Benutzer eingelogged, Download vorbereiten ------------
$file = get_var('dld',''); // aus $_GET
$dir = 'pictures/';
// Prüfen, ob Datei für Download verfügbar ---------------
if (makeDownload($dir, $file)){
// ID-Email senden -----------------------------------
// sendIDEmail($path.$dir, $file, true);
} else {
// Datei nicht vorhanden, Fehlermeldung --------------
$template->read_template('../template/module_download_nofile.tpl','%mainframe%');
$template->read_template('../template/mainframe_leftframe_impressum.tpl','%leftframe%');
$template->read_template('../template/mainframe_leftframe_bottom_navi.tpl','%bottomnavi%');
$template->replace_template('%infomail%','info@klangwerk2.de');
// Login/Logout Templates steuern
if ($isloggedin){
$template->replace_template('%logonlogo%','login6_48px.png');
}else{
$template->replace_template('%logonlogo%','login5_48px.png');
}
}
} else {
// Benutzer nicht eingelogged, Meldung ausgeben ----------
$template->read_template('../template/module_download_nologin.tpl','%mainframe%');
$template->read_template('../template/mainframe_leftframe_impressum.tpl','%leftframe%');
$template->read_template('../template/mainframe_leftframe_bottom_navi.tpl','%bottomnavi%');
// Login/Logout Templates steuern
if ($isloggedin){
$template->replace_template('%logonlogo%','login6_48px.png');
}else{
$template->replace_template('%logonlogo%','login5_48px.png');
}
}
break;
%mainpfad%download/download.php%linkext%&lid=111&dld=bdm_01.jpg
Da ich viel mit Templates arbeite ist alles auf relative Pfadangaben gesetzt und klappt local wie am Server einwandfrei. Nach dem Upload des Scripts (download.php) und den Templates klappt alles bis auf den Download. Ich bekomme imer den Fehler, dass die Datei nicht gefunden wird bzw. das Directory nicht existiert.
Selbst wenn ich dem Script die kompletten Serverpfade bis zur Datei "hardcode", will der download nicht klappen. Seite Tagen spiele ich mich auch mit den Server-Variablen "DOCUMENT_ROOT", SCRPIT-NAME" und der Funktion "getcwd()". Es klappt aber immer noch nicht.
Ich bräuchte dringend eure Hilfe, da ich hier echt feststecke. Möglicherweise übersehe ich irgend etwas einfaches. Gut möglich dass ich auch schon Code-blind bin.
Lieben Dank an euch und ich bin für jeden Hinweis dankbar.
Liebe Grüße
Volkmar

Kommentar