13

デフォルトでファイル名に名前を付ければ、MicrosoftWordを正常にダウンロードできます。しかし、$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 に答える