Page 1 of 1

Download von Dateien (Link verstecken)

Posted: Sun Aug 03, 2008 8:21 am
by MoFu
Hallo zusammen,

ich versuche gerade in einem Modul ein Download einzubauen. Dabei soll der Pfad zu der Datei nicht angezeigt werden. Mein Code sieht so aus und sollte laut einem Buch auch funktionieren. So sieht es bisher aus:

Code: Select all

global $gCms;

$file = $gCms->config['uploads_path'].'/paper/'.$file_in;
$size = filesize($file);
  	
header("Content-type: application/octet-stream");
header("Content-disposition: attachement; fileneame=".$file);
header("Content-Length: ".$size);
header("Pragma: no-cache");
header("Expires: 0");
readfile($file);
Das ganze ist eine Funktion und bekommt z.B. test.pdf übergeben. Es funktioniert eigentlich alles und ich bekomme auch einen Download aber ich kann nur das moduleinterface.php runterladen. Ich glaub ich bin noch nicht so ganz hinter das System von CMSMS gestiegen :-)

Re: Download von Dateien (Link verstecken)

Posted: Mon Aug 04, 2008 12:54 pm
by MoFu
So ich habe es jetzt hinbekommen das er mir Datei runterläd ... aaaaaaaaber es funktioniert nicht richtig weil ich habe versucht die Funktion in eine "actio.do_" einzubauen und diese mit CreateLink und einem GET Parameter dann aufzurufen. Das Problem ist das er mir dann den Inhalt der Website + mein Dokument ausgibt. Hat jemand eine Idee wie ich es machen kann das der Link auf eine leere Seite führt, ohne Inhalt, sondern nur Text?   

 

Code: Select all

$file = '../../uploads/paper/'.$_GET['flink'];
  	
  	if(file_exists($file)) {
            header('Content-Description: File Transfer');
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename='.basename($file));
            header('Content-Transfer-Encoding: binary');
            header('Expires: 0');
            header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
            header('Pragma: public');
            header('Content-Length: ' . filesize($file));
            ob_clean();
            flush();
            readfile($file);
            exit;
     }

Re: Download von Dateien (Link verstecken)

Posted: Mon Aug 04, 2008 4:18 pm
by NaN
Dazu gibt es einen Parameter namens showtemplate:

Bsp:

Code: Select all


$this->CreateLink($id, 'action', $returnid, '', array('showtemplate' => 'false'), '', true);


Re: Download von Dateien (Link verstecken)

Posted: Fri Aug 08, 2008 7:05 am
by MoFu
Hallo NaN,

danke für deine Antwort aber kannst du mir erklären für was der Parameter gut ist? Er macht jetzt nämlich genau das selbe wie vorher. Ich hoffe es ist nich von Bedeutung das ich den Download im Backend einbauen will.

Gruß,

Robert

Re: Download von Dateien (Link verstecken)

Posted: Fri Aug 08, 2008 11:38 am
by NaN
Der Parameter showtemplate sollte eigentlich regeln, dass entweder das komplette Template (inkl. Layout usw.) oder nur der reine Inhalt ausgegeben wird.
MoFu wrote: Ich hoffe es ist nich von Bedeutung das ich den Download im Backend einbauen will.
Doch das ist es.
Da lautet der Parameter nämlich disable_theme  ;)

Allerdings gibt CMSms dann nicht nur den Inhalt Deines Moduls wieder sondern zuätzlich noch den Kommentar "admin theme disabled" und ein paar HTML Tags. Falls Dich das stört, hier habe ich mal im Core geschnüffelt:

http://forum.cmsmadesimple.org/index.ph ... #msg116047

Wenn Dein Modul irgendwann im Forge landen soll, würde ich von diesen Modifikationen absehen und stattdessen mit Javascript den Inhalt anpassen.

Z.B.:

Code: Select all


content = content.replace("<!-- admin theme disabled -->","");
content = content.replace("</div><!-- admin theme disabled -->\n</body>\n</html>","");

content sei hier jetzt mal eine Javascript Variable die den anzuzeigenden Inhalt beinhaltet.

Hoffe das bringt Dich weiter.

Re: Download von Dateien (Link verstecken)

Posted: Fri Aug 15, 2008 9:43 am
by MoFu
Kannst du bitte das ganze JS posten? Ich weiß nicht wie ich an den content komme da ich ja kein Body und sonst auch kein Element aussen rum habe oder? In Firebug wird mir in der DOM das Kommentar garnicht angezeigt dann denk ich das man auch garnicht darauf zugreifen kann.

Re: Download von Dateien (Link verstecken)

Posted: Mon Aug 18, 2008 5:51 pm
by NaN
Das ganze JS wird Dir nichts bringen, da es sich bei mir um einen Ajax-Request handelte.
Da hatte ich ja auf den Inhalt vor der Anzeige im Browser mit Hilfe eines Scripts Zugriff darauf.
In Deinem Fall wird ja eine komplett neue Seite geladen.
Da kannst Du die Kommentare etc. nur durch die Änderungen an der moduleinterface.php, header.php und footer.php im Adminverzeichnis entfernen (siehe Link oben).