• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

HTML Text trotz Download-Header

Hallo Leute,

ich habe für den Dateidownload ein PHP-Skript geschrieben. Ich würde gerne in dem sich öffnenden Fenster einen Text packen und außerdem das Fenster mittels JS automatisch schließen.

Da ich einen Download-Header verwenden muss, klappt das allerdings leider nicht.

Kann mir einer sagen, wie ich das überlisten kann? Ich habe das schon auf die Weise gesehen, nur leider kann ich den PHP-Code ja nicht einsehen, wie er in diesem Beispielen umgesetzt wurde.

Hier mal mein Skript:

Code:
<?php

		require("PFAD ZUR KONSTANTEN-DATEI");

		$addy = $_SERVER['REQUEST_URI'];
		$id = parse_url($addy);
		$id = substr($id['query'],5);
	
		include(DBCONN);
		$query = pg_query($conn, "SELECT filename FROM files WHERE id = '$id'");
		$data = pg_fetch_object($query);
		$filename = $data -> filename;
		pg_close($conn);
		
		$filepath = "..."; // steht natürlich im Original korrekt
		$file = $filepath.$filename;
 		
 		if(file_exists($file))
 			{
 		 		header("Content-Type: application/force-download");
				header("Content-Description: File Transfer");
				header("Content-Disposition: attachment; filename=".$filename."");
 		
				readfile($file);
				
			}
		else
			echo "Datei nicht gefunden!";
				
?>



Gruß
tsj
 
Sollte eigentlich funktionieren solange Header()-Aufrufe vor sonstigen Ausgaben (echo/print) kommen. Denn mit PHP werden ja auch Grafiken erzeugt.
Aber probier doch mal application/octet-stream, das ist weitaus geeigneter.
 
Also egal wo ich das echo hinsetze, ob über oder unter readfile(), der String wird nicht ausgegeben. Das Fenster bleibt leer und der Download startet...
 
thesecondjoker schrieb:
Also egal wo ich das echo hinsetze, ob über oder unter readfile(), der String wird nicht ausgegeben. Das Fenster bleibt leer und der Download startet...

So geht das nicht. Durch "Content-Disposition: attachment" wird eigentlich das Öffnen eines Browserfensters verhindert, denn der Browser erkennt durch den Header dass jetzt eine Datei runtergeladen werden soll.
Es gibt keine Möglichkeit via HTTP gleichzeitig noch Begleittext oder Statusangaben mitzugeben.
Dies geht nur wenn du beim Klick auf einen Download neben dem eigentlichen DL per JS ein Statusfenster öffnest. Ist aber eine ziemliche Fummelei ...
 
Das hier macht genau das was es soll...
Code:
<?php
## test.php
if($_SERVER["QUERY_STRING"] != "") {
    Header("Content-Type: application/octet-stream");
    echo "BINARY";
} else {
    echo "TEXT";
}
?>
 
ja danke. die möglichkeit nutze ich bereits, auch für den fall, dass die datei nicht existiert.

ich denke das, was ich gesehen habe, funktioniert wohl eher noch anders. der download wird wohl anders ausgelöst und das fenster nur parallel vermutlich mit onclick o.ä. geladen..
 
Oben