Es kann sich um XLSX-, CSV-, PNG-Dateien usw. handeln.
Für meine Tests ist es sehr einfach, ich habe eine Datei „output.csv“ auf meinem Server, die sich in /tmp/output.csv befindet.
Ich habe diesen Code, sehr einfach:
Code: Select all
public static final function downloadExcel($finalData) {
$csvFile = "/tmp/output.csv";
if (ob_get_level()) {
ob_end_clean();
}
header('Content-Description: File Transfer');
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . basename($csvFile) . '"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($csvFile));
readfile($csvFile);
exit;
}
Wenn der Download abgeschlossen ist, erhalte ich immer die Fehlermeldung: Die Excel-Datei kann nicht geöffnet werden, weil das Dateiformat oder die Dateierweiterung ungültig ist (Wenn ich es versuche mit xlsx-Datei). Bei Bildern ist es dasselbe, es heißt, dass das Format nicht gut ist.
Außer bei .csv-Dateien funktioniert es, und dank dieser Datei habe ich festgestellt, dass darin eine eingefügte Unterbrechungslinie vorhanden ist am Anfang der Datei.
Ich vermute also, dass diese neue Bruchlinie für alle Probleme verantwortlich ist, wenn ich andere Dateien herunterlade. Wenn ich zum Beispiel versuche, eine XLSX-Datei mit VS-Code zu öffnen, erhalte ich auch eine Unterbrechungslinie am Anfang der Datei.
Ich habe viele Dinge ausprobiert, viel Code mit allem ob-Methoden zum Bereinigen des Puffers. Aber es ist immer das Gleiche.
Alle meine