PHP xlsx-Header

so funktioniert das:

myphpfile.php:

<code><?php
header('Content-disposition: attachment; filename=myfile.pdf');
header('Content-type: application/pdf');
readfile('myfile.pdf');
?> 
</code>

Diese PHP-Datei wird hier aufgerufen und der PDF-Download funktioniert einwandfrei:

<code><a class = "oglasavanje" href = "../../cjenik/myphpfile.php">download</a><br/>
</code>

aber das geht nicht:

<code><?php
header('Content-disposition: attachment; filename=myfile.xlsx');
header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
readfile('myfile.xlsx');
?>
</code>

PDF- und XLSX-Dateien befinden sich im selben Ordner. Wenn ich auf den Download-Link klicke, wird das Download-Fenster geöffnet. Ich speichere die Datei, aber die Datei kann nicht geöffnet werden. Es gibt mir den folgenden Fehler:

Excel kann die Datei 'myfile.xlsx' nicht öffnen, da das Dateiformat oder die Dateierweiterung ungültig sind. Stellen Sie sicher, dass die Datei nicht beschädigt wurde und die Dateierweiterung dem Format der Datei entspricht.

Die Datei wird ordnungsgemäß geöffnet, wenn ich sie manuell öffne (d. H. Ohne sie über den Link herunterzuladen).

Ich benutze WAMP, wenn das von Bedeutung ist.

Jede Hilfe wird geschätzt.

--- EDIT ---

Ich habe diesen Code auf php.net gefunden:

<code>ob_clean();
flush();
</code>

Der endgültige Code sieht also so aus und funktioniert:

<code>$file = "myfile.xlsx";
header('Content-disposition: attachment; filename='.$file);
header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Length: ' . filesize($file));
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
ob_clean();
flush(); 
readfile($file);
</code>

Vielen Dank an alle für die Antworten.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage