2011-11-24 34 views
0

有沒有簡單的方法在服務器上創建一個空的臨時.htm文件並將其作爲下載發送給用戶?我不需要用fopen()來創建文件,只需要暫時創建併發送給用戶即可。用PHP創建一個臨時.htm文件併發送給用戶?

我需要一個網站認證。我發現PHP中有tmpfile()函數,但它對我來說還不夠用。我正在開發Symfony項目,也許還有一個我不知道的標題函數。

所有我需要的是:

$token = '12345'; 
$filename = $token . '.htm'; 
createatmpfile($filename); 
header(send .htm file as download to the user); 

不知道如何工作的,但也許我上面的僞代碼解釋什麼,我找..

編輯:

這是怎麼了適用於Symfony2(感謝Grad):

use Symfony\Component\HttpFoundation\Response; 

控制器方法:

public function generateAction() { 
    $response = new Response(); 
    $response->headers->set('Content-Disposition', 'attachment; filename="'.$token.'.htm"'); 
    return $response; 
} 

回答

2

在純PHP,你可以用它來以下行來強制用戶下載響應

header('Content-Disposition: attachment; filename="filename.htm"'); 

在Symfony的,你可以使用:

$this->getResponse()->setHttpHeader('Content-Disposition', 'attachment; filename="filename.htm"'); 

有了這個您可以只執行控制器(並讓視圖填寫響應),或者使用$contents = file_get_contents($path)return $this->renderText($contents)

但取決於你想要達到的目標:你不必創建一個tempfile來強制下載它。

+0

太棒了,謝謝格雷德! – Mike

+0

格雷德,你能幫助我嗎?我實際上在Symfony2上工作,$ this-> getResponse()通過一個致命的錯誤(調用未定義的方法)。我讀過我可以使用新的Response();與Symfony \ Component \ HttpFoundation \ Response結合使用;命名空間。 – Mike

+0

$ response = new Response(); $ response-> headers-> set('Content-Disposition','attachment; filename =''。$ token。'。htm「'); 返回$ response;作品!!感謝Grad – Mike

相關問題