質問: new Xlsx($spreadsheet); $writer->save('php://output'); header('Location: comp.html'); exit(); ``` 上記のコードにあるように、エクスプローラを起動して、クライアントPC側に『名前をつけて保存』を実行しているのですが、ファイルを保存してもLocationで指定したファイルに遷移しません。 わからないなりに思うところとして、『名前をつけて保存』をしたところで、クライアントPC側から「保存が完了した通知」がサーバー側に送信されないと、次のプログラムへ進むことができなくて、事実上の強制終了になっている?ということは思いつきました。 ### 【 調べたこと 】 * PHPで「ダウンロード」とページ遷移を同時に行うことができないこと 参考サイト:ファイルのダウンロード後に別URLへリダイレクト ### 【 やりたいこと 】 * JavascriptとCookieを併用する > > javascriptでダウンロード終了を検知する > > > 1. をonclickした時、開始フラグをcookieで保存 2. Javascript経由?でからの処理を実行 3. ファイルをダウンロードできるようになったら、終了フラグをcookieで保存 4. PHP側はファイルの保存(ヘッダー出力) 5. cookieを監視しながら、終了フラグが見つかったら、Javascriptでページ遷移
回答: header()の前に何か出力があると、header()で遷移できなくなります。 中略されている箇所に何かあったりしますでしょうか? (参考URL) https://www.php.net/manual/ja/function.header.php