php中点击下载按钮后待下载文件被清空

在php中设置了文件下载,下载按钮使用表单的方式来提交

<form method="post"  class="form-inline" role="form" >
    <input type='hidden' name='download' value='1'/>
    <div>
        <button type="submit" class="btn btn-default">下载</button>
    </div>
</form>
生成下载文件的代码,需要提交表单变量才能生成
if(isset($_POST['download'])){
    header('Location: lib/download.php');
}

但是点击下载按钮后,待下载文件会被清空,查看刷新页面的时候,文件不是空的,但是点击那个下载按钮后会清空,即使去掉了跳转代码后也会,怪了。

最后想到了,是因为点击下载的表单后,会提交请求,并重新执行页面的代码,这样因为没有提交其他的表单,不会生成文件,所以只能下载空白文件了,修改表单成如下后,问题解决
<form method="post"  class="form-inline" role="form" action = "lib/download.php">
    <input type='hidden' name='download' value='1'/>
    <div>
        <button type="submit" class="btn btn-default">下载</button>
    </div>
</form>
 
原文地址:https://www.cnblogs.com/wuxie1989/p/5440710.html