2017-08-04 62 views
0

我遇到问题,我生成了页面模板的预览并将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)); 

?> 
+0

为什么在'generate.php'你要写两次文件? – RiggsFolly

+0

你在文件上写什么数据 – Bhargav

+0

这行代码是用于其他PHP版本 – Montana

回答

1

除了明显的“写入template.html”两次,您不会发送get.php文件中的$ download下载内容。地址

echo $download; 

作为get.php的最后一行。

+0

确实,你是对的 - 一个愚蠢的错误。它的工作,谢谢老兄。 :d – Montana

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