2016-05-19 4 views
0

私はbashスクリプトを実行して出力tarをダウンロードするPHPページを持っています。問題は、ファイルがダウンロードされると、ページがロードされてリダイレクトされないことです。私はこのようないくつかの問題を見つけましたが、私の場合に当てはまるものは何もありません。私のコードは次の通りです:ファイルがPHPでダウンロードされた後に私のページが読み込みを続けるのはなぜですか?

<?php 


    $output=shell_exec('cd /opt/dir/ && sudo ./collect_diagnostics.sh && cd -'); 
    $rows_output = explode("Report is in ", $output); 
    $rows_output2 = explode(" ", $rows_output[1]); 

    $path_parts = pathinfo($rows_output2[0]); 
    $file_name = $path_parts['basename']; 
    $file_path = "/opt/dir/test/".$file_name; 

    if (is_readable($file_path)) { 
     header('Content-Disposition: attachment; filename="'.$file_name.'"'); 
     ob_clean(); 
     readfile($file_path); 
    } else { 
     echo "404 Error"; 
    } 

    header('Location:./aps_control.php') ; 
?> 

私はbashスクリプトが動作していて、ダウンロードが行われ、有効なファイルがあります。唯一の問題は、ページのロードが完了しないことと、これが関連しているかどうかわからないが、7-zipで解凍されたファイルが「ペイロードデータの最後の後にいくつかのデータがあります:version_Placeholder.tar」と言います。また、私は個人的な改善のために間違っていることを本当に知りたいです。ファイルをダウンロードする方法を学習するための

私の主なリソースは、あなたがページを表示し、同じリクエストにファイルを提供しようとするべきではありませんhttp://www.media-division.com/the-right-way-to-handle-file-downloads-in-php/

+0

誰にでも投票してくださった方に、私がなぜ投票を避けることができるのか教えてください。さもなければ、それは潜在的に私の能力を将来的に学び、質問する私の能力を損なうものではありません。 – mando222

答えて

1

ました。ただファイルを提供してください。

戻るボタンを使用して新しいページに移動したい場合は、そのページにリダイレクトする必要があります。そのページでは、ダウンロードを行う新しいページがトリガーされます。それらを組み合わせないでください。

+0

私はヘッダー( 'Location:./dir_control.php')を追加しました。ボタンを削除しました。しかし、まだ問題を見ている。 – mando222

+1

@ mando222いいえ、しないでください。 *ファイルはファイル*をダウンロードする以外は何もできません。リダイレクトも出力もありません。 readfileが完了すると、完了です。 – Matsemann

+0

私はこれを2ページに分けて、スクリプト部分を扱い、ダウンロードリンクとダウンロードを提供するページに分けました。ユーザーにダウンロードページが表示されるのは、エラーが発生した場合のみです。これは私の元のビジョンではないにもかかわらず、動作するようです。助けてくれてありがとう。 – mando222

関連する問題