使用php下载xlsx文件

OTA*_*TAR 4 php header file xlsx

我需要xlsx从我的网站下载make文件(但不是像这样直接打开文件 url: http://site.com/file.xlsx

所以,这是php代码

        $file = "somefile.xlsx";
        header('Content-Description: File Transfer');
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment; filename='.basename($file));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        ob_clean();
        flush();
        readfile($file);
Run Code Online (Sandbox Code Playgroud)

文件已下载,他的扩展名是.xlsx,但是当尝试在 ms excel 中打开此文件时,文件未打开并且出现错误:excel cannot open the file.xlsx because the file format or file extension is not valid

请告诉,为什么会这样?我错在哪里?

OTA*_*TAR 5

多年后,我遇到了同样的问题,经过搜索,我再次来到这里 ))

这是解决方案,对我有用:

$file = "somefile.xlsx";
// define file $mime type here
ob_end_clean(); // this is solution
header('Content-Description: File Transfer');
header('Content-Type: ' . $mime);
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"" . basename($file) . "\"");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
readfile($file);
Run Code Online (Sandbox Code Playgroud)