Я могу успешно загрузить свое Microsoft Word, если я назвал его по имени файла по умолчанию. Но если я использую $ variables, чтобы назвать его. Расширение документа будет неизвестно.
Образец:
$No = 1; $Name = 'John'; $Test = 'Science'; //Download header $document->save($doc); header('Content-Description: File Transfer'); header('Content-Type: application/msword'); header("Content-Disposition: attachment; filename='$No_$Name_$Test.docx"); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($doc)); ob_clean(); flush(); readfile($doc);
Поэтому, если я переименую свое имя файла как переменные. Загрузка файла будет без расширения docx. Кто-нибудь может посоветовать?
благодаря
Изменить это
header('Content-Type: application/msword');
в
header('Content-Type: application/octet-stream');
РЕДАКТИРОВАТЬ:
И изменение
header("Content-Disposition: attachment; filename='$No_$Name_$Test.docx");
в
header("Content-Disposition: attachment; filename=\"{$No}_{$Name}_{$Test}.docx\"");
Правильные заголовки
для Excel (* .xlsx):
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="' . $fileName . '"');
для Word (* .docx):
header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document'); header('Content-Disposition: attachment;filename="' . $fileName . '"');
Правильное использование этого заголовка:
Content-Disposition: attachment; filename="fname.ext"
Content-Disposition: attachment; filename="fname.ext"
отмечают, что если имя содержит пробелы, оно должно быть процитировано
См. RFC6266 раздел 5. Примеры