2017-08-04 66 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