PHP ファイルのダウンロードの問題
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> function download_file($filename){ //below to provide the download if (file_exists($filename)) { $file = fopen($filename); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . basename($filename)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($filename) . ' bytes'); //ob_clean(); //flush(); readfile($filename); fclose($file); exit; } $this->_redirect('xxxxxxx');
[ユーザー:root 時刻:23:25:51 パス:/home/apache/web]$ catindex.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <スクリプトタイプ="text/javascript"> var is_click = false; </スクリプト> <a href="index.php" onclick="is_click = true;" onMouseOut="if (is_click) location.href='main.php';">aaa</a> </ボディ> </html> <br><font color="#e78608">------解決策---------</font><br>いいえ、HTTP セッションは 1 種類のデータ <br> であり、ダウンロードはユーザーに対して非同期です <br><font color="#e78608">------解決策---------</font><br>保存ではなく開いてください。これはファイルが原因ですたとえば、Chrome では PDF ファイルが保存されずに表示されます。 <br>追加の Header 応答ヘッダーを追加する必要があります: <br>Content-Disposition:attachment; filename="$filename"<br><br>追加方法としては、生成されたヘッダーを PHP に読み取らせて出力させることができます。ファイル を作成し、 header 関数を使用します。 <br>または、ファイルを強制的にダウンロードするように Web サーバーを設定することもできますが、その設定方法がわかりません <div class="clear"></div>