函数返回空文件虽然包含内容

时间:2017-08-04 10:38:10

标签: php

我遇到了问题,我生成了页面模板的预览并将HTML保存到template.php文件中。只要文件template.php包含它应包含的内容,那么当您单击按钮时,生成的文件为空 - 为什么?

我有两个文件 - generate.php(包含预览的生成和下一个表单中的按钮以生成下载)

Get.php - 下载文件的脚本

GENERATE.PHP

<?php
    $template = ob_get_flush();
    $fp = fopen('template.html', 'w');
    fwrite($fp, $template);
    fclose($fp);
    file_put_contents('template.html', $template);
?>


<form method="post" action="get.php">
    <div id="container">
        <input type="submit" id="download" value="Download template"/>
    </div>
</form>

GET.PHP

<?php

    $download = file_get_contents('./template.html');
    header('Content-type: application/octet-stream');
    header('Content-Disposition: attachment; filename=template.html');
    header('Content-length: '.strlen($download));

?>

2 个答案:

答案 0 :(得分:1)

除了明显的“写入template.html”两次外,您还没有在 get.php 文件中发送$ download的内容。地方

echo $download;

作为get.php的最后一行。

答案 1 :(得分:0)

html代码之前写下您的php代码,以便其工作

<form method="post" action="get.php">
<div id="container">
<input type="submit" id="download" value="Download template"/>
</div>
</form>

并在该代码之后添加您的file write代码,因为

ob_get_flush()如果没有激活缓冲,则返回输出缓冲区或FALSE。并且你的缓冲区为空,所以返回false