13

如果我默认在文件名中命名它,我可以成功下载我的 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 扩展名。任何人都可以建议?

谢谢

4

3 回答 3

21

正确的标题是

对于 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 . '"');
于 2013-03-29T12:46:12.993 回答
6

改变这个

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\"");
于 2012-07-14T21:01:51.843 回答
2

该标头的正确用法是:

Content-Disposition: attachment; filename="fname.ext"请注意,如果名称包含空格,则必须用引号引起来

请参阅RFC6266 第 5 节。示例

于 2016-03-17T03:23:01.733 回答