XAMPP+PHP7+MySQLを利用しています。
基本的な動作はきちんと動作しているのですが、最終的な動作が完了したらページを遷移したいのですがうまく遷移してくれません。
PHP7
1 2(exchange.php) 3 4 ~~~ 中略 ~~~ 5 6 // ダウンロード 7 header("Content-Description: File Transfer"); 8 header('Content-Disposition: attachment;filename="' . $fileName . '"'); 9 header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 10 header('Content-Transfer-Encoding: binary'); 11 header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 12 header('Expires: 0'); 13 header('Pragma: public'); 14 15 $writer = new Xlsx($spreadsheet); 16 $writer->save('php://output'); 17 18 header('Location: comp.html'); 19 exit();
上記のコードにあるように、エクスプローラを起動して、クライアントPC側に『名前をつけて保存』を実行しているのですが、ファイルを保存してもLocationで指定したファイルに遷移しません。
わからないなりに思うところとして、『名前をつけて保存』をしたところで、クライアントPC側から「保存が完了した通知」がサーバー側に送信されないと、次のプログラムへ進むことができなくて、事実上の強制終了になっている?ということは思いつきました。
【 調べたこと 】
- PHPで「ダウンロード」とページ遷移を同時に行うことができないこと
参考サイト:ファイルのダウンロード後に別URLへリダイレクト
【 やりたいこと 】
- JavascriptとCookieを併用する
- <submit>をonclickした時、開始フラグをcookieで保存
- Javascript経由?で<form>からの処理を実行
- ファイルをダウンロードできるようになったら、終了フラグをcookieで保存
- PHP側はファイルの保存(ヘッダー出力)
- cookieを監視しながら、終了フラグが見つかったら、Javascriptでページ遷移
回答5件
あなたの回答
tips
プレビュー