Header-Problem bei Datei Download PHP

Hallo,
ich habe ein Problem mit meinem Datei-Download. Ich möchte auf einen Button klicken und es soll sich ein Dialogfeld "speichern unter..." öffnen. Das Problem bei einem einfachen <a href=...> ist, das sich Bilder im Browser öffnen und hier kein Dialogfeld angezeigt wird. Deshalb habe ich es anders versucht:


Meine Abfrage: Wenn "runterladen" gedrückt wird:

PHP:
if(isset($_POST["runterladen"]) && ($_POST["runterladen"] !== "")) 
{
	$datei = "./data/$save_file";
	$file = fopen("$datei","r"); 
	header("Content-Type: application/download"); 
	header("Content-Disposition: attachment; filename=$datei"); 
	fpassthru($file); 
	fclose($file); 
}

...und hier das Form:

Code:
<form action="SelbeSeite.php?<?php  echo $save_file; ?>" method="post">
<input type="image" name="runterladen" value="save_file=$my_file->file_name" src="images/bild.png">
</form>

Mein Problem:
Es tut sich beim Button-Klick gar nichts :-/ ausser der Fehlermeldung "Header already send by...". Aber ich kann doch die Header-Information nicht einfach rausnehmen. Wer weiss Rat.......dringend :-/

MfG, Anke
 
Wenn die Meldung kommt, dann liegt das Problem darin das schon HTML ausgaben da sind. Headers / Session und Cookies müssen immer an Anfang stehen ohne das bereits irgendwelche HTML Ausgaben durchlaufen sind.

Aber eine Funktion um dies zu umgehen wäre

-> [phpf]ob_start[/phpf]
-> [phpf]ob_end_flush[/phpf]

Gruß Mirko
 
hast du for dem Funktionsaufruf schon was ausgegben? Also entweder direkt HTML oder mit echo?

Das is der übliche Fehler der diese Meldung verursacht da der Header automatisch gesendet wird sobald du etwas an den Browser schickst.
 
ob_start(), ob_end_flush()

-> [phpf]ob_start[/phpf]
-> [phpf]ob_end_flush[/phpf]

Ja, ich will keinen extra Popup, habe ein HTML-Gerüst drumherum. Nun habe ich das ob_start vor mein "if(isset)....." geschrieben und ob_end() dahinter. Hat aber nichts gebracht :-(.
 
PHP:
<?
ob_start();
?>
<html>
noch mehr html
..
.
dsfsdfs
..dfsdfs
<?
if (  [....]   ) {

[...]

der header hier .....

}
?>
wieder ne menge <html>
<?
ob_end_flush();
?>
 
Daaaaaaanke :)....kriege zwar noch den falschen Dateinamen in mein Downloadfenster, aber das Problem lässt sich bestimmt leichter beheben.
Vielen Dank an alle :)
 

Neue Beiträge

Zurück