代码之家  ›  专栏  ›  技术社区  ›  Tech Aimley

PHP下载脚本在下载完成之前无法导航到其他页面

  •  0
  • Tech Aimley  · 技术社区  · 6 年前

    我正在开发一个基于视频的网站,我必须提供下载视频的链接。

    我使用了下面的代码,它工作得很好。

    if (file_exists($FileDownload)) {
            $Basename = pathinfo($FileDownload, PATHINFO_BASENAME);
    
            $mime = 'application/force-download';
            header('Pragma: public');  // required
            header('Expires: 0');  // no cache
            header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
            header('Cache-Control: private', false);
            header('Content-Type: ' . $mime);
            header('Content-Disposition: attachment; filename="' . basename($Basename) . '"');
            header('Content-Transfer-Encoding: binary');
            header('Connection: close');
            readfile("$FileDownload");  // push it out
            exit();
        }
    $this->render(false);
    

    它正在强制下载文件,它写在我的控制器操作上,我将视图渲染为false。

    问题是,当我单击下载并开始下载文件时,在下载完成之前,我无法导航到其他页面。

    谢谢

    1 回复  |  直到 6 年前
        1
  •  0
  •   Tech Aimley    6 年前

    经过多方努力,我终于知道了答案。

    CakePhp响应文件是我问题的解决方案。

    更新的代码

    $FileDownload = base64_decode($FileDownload);
    
    
            // Retrieve the file ready for download
    
            $Basename = pathinfo($FileDownload, PATHINFO_BASENAME);
            // Run any pre-download logic here.
            // Send file as response
            $this->response->file(
                    $FileDownload, array(
                'download' => true,
                'name' => $Basename
                    )
            );
            return $this->response;