Download von Dateien (Link verstecken)

Deutschsprachiger Support für CMS Made Simple
Post Reply
MoFu
Forum Members
Forum Members
Posts: 15
Joined: Fri Mar 28, 2008 11:15 am

Download von Dateien (Link verstecken)

Post 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 :-)
Last edited by MoFu on Sun Aug 03, 2008 8:27 am, edited 1 time in total.
MoFu
Forum Members
Forum Members
Posts: 15
Joined: Fri Mar 28, 2008 11:15 am

Re: Download von Dateien (Link verstecken)

Post 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;
     }
NaN

Re: Download von Dateien (Link verstecken)

Post by NaN »

Dazu gibt es einen Parameter namens showtemplate:

Bsp:

Code: Select all


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

MoFu
Forum Members
Forum Members
Posts: 15
Joined: Fri Mar 28, 2008 11:15 am

Re: Download von Dateien (Link verstecken)

Post 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
NaN

Re: Download von Dateien (Link verstecken)

Post 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.
MoFu
Forum Members
Forum Members
Posts: 15
Joined: Fri Mar 28, 2008 11:15 am

Re: Download von Dateien (Link verstecken)

Post 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.
Last edited by MoFu on Fri Aug 15, 2008 12:33 pm, edited 1 time in total.
NaN

Re: Download von Dateien (Link verstecken)

Post 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).
Post Reply

Return to “German - Deutsch”