为什么我的页面在 php 下载文件后一直在加载?
Why does my page keep loading after the file is downloaded in php?
我有一个 php 页面运行 bash 脚本然后下载输出 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 中解压缩时文件显示 "There are some data after the end of the payload data : version_Placeholder.tar"。我也很想知道我做错了什么来提高个人水平。
我学习如何下载文件的主要资源是http://www.media-division.com/the-right-way-to-handle-file-downloads-in-php/
您不应尝试在同一个请求中显示页面和提供文件。只需提供文件。
如果您希望用户转到带有后退按钮的新页面,您应该将他们重定向到该页面,并且该页面应该触发一个新页面来执行下载。不要合并它们。
我有一个 php 页面运行 bash 脚本然后下载输出 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 中解压缩时文件显示 "There are some data after the end of the payload data : version_Placeholder.tar"。我也很想知道我做错了什么来提高个人水平。
我学习如何下载文件的主要资源是http://www.media-division.com/the-right-way-to-handle-file-downloads-in-php/
您不应尝试在同一个请求中显示页面和提供文件。只需提供文件。
如果您希望用户转到带有后退按钮的新页面,您应该将他们重定向到该页面,并且该页面应该触发一个新页面来执行下载。不要合并它们。