2011-11-24 29 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

相关问题