为什么我的页面在php下载文件后继续加载?

时间:2016-05-19 16:10:12

标签: php readfile downloading

我有一个运行bash脚本的php页面然后下载输出tar。问题是,一旦下载文件,页面就会继续加载,永远不会重定向。我发现了一些像这样的问题,但似乎没有什么适用于我的情况。我的代码如下:

<?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解包时的文件说&#34;有效载荷数据结束后有一些数据:version_Placeholder.tar& #34 ;.另外,我真的想知道我为个人改进做错了什么。

我学习如何下载文件的主要资源是http://www.media-division.com/the-right-way-to-handle-file-downloads-in-php/

1 个答案:

答案 0 :(得分:1)

您不应该尝试显示页面并在同一请求中提供文件。只需提供文件。

如果您希望用户使用后退按钮转到新页面,则应将其重定向到该页面,该页面应触发执行下载的新页面。不要把它们结合起来。