readfile in thickbox

Microhome

Erfahrenes Mitglied
Servus liebe Community,
ich habe eine Frage zum Dateidownload via PHP. Das ganze sollte ja prinzipiell so funktionieren:

Code:
$file = $_GET["file"];
$filename = "files/$file.txt";
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"blah.txt\"");
readfile($filename);

Der ganze Code steht bei mir in einer Thickbox. Wenn ich diese jedoch öffne, dann steht der Code dadrin, wie er im File file.ext steht. Ich möchte aber, dass mir die Datei zum Download angeboten wird. Was ist daran falsch


Vielen Dank für euch Hilfe und ein sonniges Wochenende!
 
Zuletzt bearbeitet:
Moin,

probiere mal, den code in ein Externes PHP-Skript zu Schreiben, und dieses dann über eine "iframed"-Thickbox aufzurufen.
 
Funktioniert leider genau so wenig wie die AJAX-Variante. Wenn ich die komplette URL jedoch im Browser eingebe funktioniert's:
Code:
URL:
http://127.0.0.1/WWW/tb.php?height=300&width=300&todo=get&file=test

Code in tb.php:
$file = $_GET["file"];
$filename = "files/$file.txt";
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"blah.txt\"");
readfile($filename);

Wenn ich das ganze jedoch über folgenden Link öffne bekomme ich den Inhalt der Datei test.txt angezeig, bzw. bekomme ich eine leere Seite.

Code:
<a href=\"tb.php?height=300&width=300&todo=get&file=test\" title=\"test.txt downloaden\" class=\"thickbox\">test.txt</a>
 
Es gäbe auch noch die Möglichkeit per .htaccess.
Dort müsste es dann ungefähr so aussehen, wenn mich nicht alles täuscht:
Code:
<FilesMatch "\.txt$" >
ForceType application/octet-stream
</FilesMatch>
 
Hmm, das muss ja aber auch irgendwie ohne .htaccess funktionieren, denn wie gesagt: Wenn ich die URL direkt aufrufe funktioniert es ja. Nur in der Thickbox wird komischerweise nicht die Datei zum Download angeboten, sondern ausgelesen und deren Inhalt ausgegeben.
 
Also bei mir funktioniert das mit iframed content, der Link müsste dann so aussehen:
Code:
http://127.0.0.1/WWW/tb.php?todo=get&file=test&KeepThis=true&TB_iframe=true&height=300&width=300

Allerdings ist mir noch nicht klar, wozu du dort die thickbox benötigst, denn wenn es zum Download angeboten wird, bleibt diese leer.

Es würde somit ein simpler Link ohne thickbox ausreichen, um den Downloaddialog zu initiieren:
Code:
<a href="http://127.0.0.1/WWW/tb.php?todo=get&file=test"  target="_blank" >
 
Zurück