Download von Text-Datei (nicht anzeigen)

Steusi

Nasenbär
Hallo Leute ich habe ein großes Problem ich habe eine ASC Datei auf meinem Server, welche ich bearbeite und danach wieder downloaden möchte. Nur der download klappt nicht.
Die Datei soll nicht angezeigt werden. Wie bekomme ich es hin?


1. Versuch:
PHP:
function makeDownload($file, $dir, $type) {
    
    header("Content-Type: $type");

    header("Content-Disposition: attachment; filename=\"$file\"");

    readfile($dir.$file);
    
}
if (isset($_GET["download"]) && !strcmp( $_GET['download'], '1' )) {
	makeDownload("Datei_neu.ASC","uploaded_files/","application/pgp");
	
	
	
}

Mein Problem ich weiß nicht welchen Pfad ($dir) ich angeben muss.

Meine Versuche:
Code:
C:\\xampp\\htdocs\\PROJEKT\\uploaded_files\\
C:\/xampp\htdocs\/PROJEKT\/uploaded_files\/
C:\xampp\htdocs\PROJEKT\uploaded_files\
C:/xampp/htdocs/PROJEKT/uploaded_files/
uploaded_files/
localhost/PROJEKT/uploaded_files/

und vieles mehr

Fehlermeldung (welche er in die zudownloadende Datei schreibt
PHP:
<br />
<b>Warning</b>:  readfile(uploaded_files/Bader_neu.ASC) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: No such file or directory in <b>C:\xampp\htdocs\Bader\lib\download.php</b> on line <b>9</b><br />


2. Versuch
PHP:
$path = "C:\\xampp\\htdocs\\PROJEKT\\uploaded_files";

if (file_exists($path . $_GET['file'])) {
header("Content-type: application/octet-stream\n");
header("Content-disposition: attachment; filename=\"" . $_GET['file'] . "\"\n");
header("Content-transfer-encoding: binary\n");
header("Content-length: " . filesize($path . $_GET['file']) . "\n");
$fp = fopen($path . $_GET['file'], "r");
fpassthru($fp); 
fclose ($fp);
} else
echo "datei existiert nicht";

Fehler: Datei existiert nie.

Ich hoffe mir kann jemand helfen.

Am besten bis 16:00 Uhr ich DANKE euch ;)
 
Zu deinem zweiten Versuch, ich denke da fehlt ein "/" (€: eher nen "\" sry) zwischen Pfad und Datei.
 
Das könnte dir auch helfen, dort hast du auch Beispiel Codes.

http://de2.php.net/fpassthru

Hinweis: Wenn Sie fpassthru() auf eine binäre Datei unter Windows anwenden, sollten Sie sicherstellen, dass die Datei im Binärmodus geöffnet wurde, indem Sie ein b an den Mode-Parameter von fopen() anhängen.
Auch wenn es Ihr System nicht verlangt, sollten Sie den b Flag bei Binärdateien verwenden, um die Portabilität Ihrer Skripte zu erhöhen.
 
@ hubbl, mit einem Backslash bzw. Slash kommen mehrere Fehlermeldungen

Code:
Warning: fopen(C:/xampp/htdocs/XXX/uploaded_files/) [function.fopen]: failed to open stream: Permission denied in C:\xampp\htdocs\XXX\lib\download.php on line 23

Warning: fpassthru(): supplied argument is not a valid stream resource in C:\xampp\htdocs\XXX\lib\download.php on line 24

Warning: fclose(): supplied argument is not a valid stream resource in C:\xampp\htdocs\XXX\lib\download.php on line 25

PHP:
$path = trim("C://xampp/htdocs/Bader/uploaded_files/ ");

if (file_exists($path . $_GET['file'])) { // ist true!
header("Content-type: application/octet-stream\n");
header("Content-disposition: attachment; filename=\"" . $_GET['file'] . "\"\n");
header("Content-transfer-encoding: binary\n");
header("Content-length: " . filesize($path . $_GET['file']) . "\n");
$fp = fopen($path . $_GET['file'], "r");  //line 23
fpassthru($fp);   //line 24
fclose ($fp);   //line 25
} else
echo "datei existiert nicht";

Habe die Datei auch schon die Rechte 777 gegeben, jedoch hat es nichts geändert.
Hat jemand eine Idee oder ein anderes Download-Script für mich!
 
Einen Ordner kannst du so aber nicht auslesen (oder beschreiben), wofür das Handle, das fopen() zurück gibt gut ist. Und du öffnest wirklich deinen Uploadordner ($_GET['file'] nicht gesetzt).

file_exists() gibt natürlich trotzdem true zurück, da der Ordner ja existiert. Am besten noch auf isset($_GET['file']) prüfen.
 
Zurück