これは機能します:
myphpfile.php:
<?php
header('Content-disposition: attachment; filename=myfile.pdf');
header('Content-type: application/pdf');
readfile('myfile.pdf');
?>
その php ファイルはここで呼び出され、PDF のダウンロードは正常に機能します。
<a class = "oglasavanje" href = "../../cjenik/myphpfile.php">download</a><br/>
しかし、これは機能しません:
<?php
header('Content-disposition: attachment; filename=myfile.xlsx');
header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
readfile('myfile.xlsx');
?>
.pdf ファイルと .xlsx ファイルの両方が同じフォルダーにあります。「ダウンロード」リンクをクリックすると、ダウンロード ウィンドウがポップアップ表示され、ファイルを保存しますが、ファイルを開くことができません。次のエラーが表示されます。
ファイル形式またはファイル拡張子が無効であるため、Excel はファイル 'myfile.xlsx' を開くことができません。ファイルが破損していないこと、およびファイル拡張子がファイルの形式と一致していることを確認してください。
ファイルを手動で開くと、ファイルは正常に開きます (つまり、リンク経由でダウンロードする必要はありません)。
それが重要な場合、私はWAMPを使用しています。
どんな助けでも大歓迎です。
- - 編集 - -
php.net で次のコードを見つけました。
ob_clean();
flush();
したがって、最終的なコードは次のようになり、機能します。
$file = "myfile.xlsx";
header('Content-disposition: attachment; filename='.$file);
header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Length: ' . filesize($file));
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
ob_clean();
flush();
readfile($file);
答えてくれてありがとう。