如何下载文件然后重定向到PHP中的另一个页面?

时间:2013-04-08 06:21:36

标签: php html download

好的,我有以下php文件:

    <?php
        header("Content-Type: application/octet-stream");

    $file = $_GET["file"];
    header("Content-Disposition: attachment; filename=" . urlencode($file));   
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");
    header("Content-Description: File Transfer");            
    header("Content-Length: " . filesize($file));
    $file = "pdf/".$file;
    flush(); // this doesn't really matter.
    $fp = fopen($file, "r");
    while (!feof($fp)) {
        echo fread($fp, 65536);
        flush(); // this is essential for large downloads
    }

    if ($file="pdf/sampleFile.pdf") {
    ?>
<html>
<head>
    <title>Best Recipes Ever!</title>
    <link rel="stylesheet" href="style/style.css" />
</head>

<body>
    <div id="header">
        <h1>Best Recipes Ever!</h1>
    </div>
    <div id="page">
        <h1>Thank You For Your Download!</h1>
        <p>I sincerely hope that you enjoy this free recipe! If satisfied, please feel free to return and purchase some of my recipes. Trust me, you won't regret it!</p>
    </div>
    </body>
    </html>
    <?php 
    }

    fclose($fp);
    ?>

这个想法是,如果它是示例文件,它会下载文件,然后重定向到感谢页面。但是,如果它是付费下载,则此文件仅下载文件,但不执行任何操作(因为它们来自的页面是已购买的下载文件链接的列表,因此它需要保留在该页面上)。

此页面正在执行的操作是下载文件但不重定向。我究竟做错了什么?我该如何解决?

4 个答案:

答案 0 :(得分:4)

最好的办法是将页面顺序调整一下。设置一个页面,“感谢您下载此示例”页面,并将其设置为执行javascript刷新,实际上将您带到下载。由于这是一个下载,而不是一个新页面,感谢页面仍将存在。如果他们在浏览器上没有javascript,请输入指向实际文件的链接。

您可以为每个文件设置一个页面,但最好的办法是将文件名作为get var传递,即ThankYou.php?file=sample.pdf

答案 1 :(得分:1)

添加header()功能,以便在下载成功后重定向您的页面

header( "refresh:5;url=yourlocation.php" );

资源链接(here

答案 2 :(得分:1)

此代码在我的情况下运作良好。也许它会帮助你。 这是主页:

OpenRowSet

主页中的此脚本:

<form action="/download.php" method="post">
  <button type="submit">Download</button>
</form>

您必须在dowload.php中编写您的php代码以供下载。如果在download.php中,您的代码只下载文件,那么您的主页将不会重新加载。因此处理表单的脚本将起作用。

答案 3 :(得分:-2)

使用html或javascript重定向,因为即使标题已经发送也能正常工作。如果下载是一个示例文件,请回复此信息。

e.g。

HTML

echo "<meta http-equiv = 'Refresh' content = '2; url =./redirectpage.php'/>"; // change redirectpage.php to where you want to redirect.

的JavaScript

echo '<script type="text/javascript">
          window.location.href="./redirectpage.php";
      </script>';