代码之家  ›  专栏  ›  技术社区  ›  Hamza Abdaoui

PHP5.3.3:从服务器下载文件并继续执行脚本

  •  1
  • Hamza Abdaoui  · 技术社区  · 7 年前

    path_facture_name

    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="' . basename($path_facture_name) . '"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Content-Length: ' . filesize($path_facture_name));
    ob_clean();
    flush();
    readfile($path_facture_name);
    ob_end_flush();
    # ----
    # Some other PHP code
    # ----
    

    这工作得很好,但是当下载文件时,脚本就结束了,部分 Some other PHP code 永远不会被处决。

    所以,我的问题是,有没有更好的方法从服务器上下载一个文件,而不中止下一部分代码的执行?

    我试着用 <iframe> JavaScript window 啜饮 .php 处理下载的文件。但这不起作用,因为我想添加的这个功能是一个18年前的复合体的一部分 php

    我在找一个 PHP 解决方案或指南。

    1 回复  |  直到 7 年前
        1
  •  -1
  •   Hamza Abdaoui    7 年前

    这个问题的答案是@ 阿德森

    “并重新加载当前的php页面”…您不能这样做,只有浏览器可以在这种情况下这样做。您已经以文件下载的形式给出了对请求的响应。从服务器“重新加载当前页面”的唯一方法是发送一些新的HTML供浏览器显示。但是你不能用一个文件下载和一个HTML文档来响应一个HTTP请求。这在生理上是不可能的。您已经设置了向浏览器指示响应是供下载的文件的标头。

    所以这是一个 HTTP 限制。我们不能做多部分的回应。

    推荐文章