2013-09-21 27 views
0

試圖寫的html文件,並打開文件對話框寫一個文件,並將其發送給用戶

爲用戶保存

,但沒有發生,沒有錯誤

任何想法?

謝謝

這是我的代碼

<?php 
    $css=$_POST['css']; 
    $html=$_POST['html']; 

     $handle = fopen("file.txt", "w"); 
     fwrite($handle, $html); 
     fclose($handle); 

     header('Content-Description: File Transfer'); 
     header('Content-Type: application/octet-stream'); 
     header('Content-Disposition: attachment; filename='.basename($handle)); 
     header('Content-Transfer-Encoding: binary'); 
     header('Expires: 0'); 
     header('Cache-Control: must-revalidate'); 
     header('Pragma: public'); 
     header('Content-Length: ' . filesize($handle)); 
     ob_clean(); 
     flush(); 
     readfile($handle); 
     exit; 

    ?> 

回答

0

你不能在這裏傳遞文件對象,這應該是一個有效的文件名

header('Content-Disposition: attachment; filename=file.txt')); 
0

首先,你混了兩件事在你的代碼中:文件句柄和文件名。 fopen,fwritefclose與前者一起工作; basename,filesizereadfile - 與後者。你似乎有文件名作爲一個固定的字符串,可以這樣寫:

$filename = "./file.txt"; 
$handle = fopen($filename, "w"); 
fwrite($handle, $html); 
fclose($handle); 

header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment;filename=' . basename($filename)); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($filename)); 
ob_clean(); 
flush(); 
readfile($filename); 

其次,我承認我沒有得到什麼的代碼。看來你需要一些輸入返回到用戶的下載,你不必創建一個文件,然後寫,然後讀取後回立刻道:這......

header('Content-Length: ' . strlen($html)); 
echo $html; 

。 ..足夠了:你不需要讀迴文件,它足以回顯它的內容(並且與fwrite('w')一樣,它與$html內容完全相同)。

相關問題