Download xlsx file using php
file, header, php, xlsx
Solution
After many years, I got same problem, and after searching, I got here again ))
This is solution, that worked for me:
$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);
Problem
I need make `xlsx` file download from my site (but not from directly open file url like this: `http://site.com/file.xlsx` ) So, this is php code ``` $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); ``` file is downloaded, his extension is `.xlsx`, but when trying open this file in ms excel, file not opened and I got error : `excel cannot open the file.xlsx because the file format or file extension is not valid` Tell please, why this happened? where I am wrong?