使用Zend Framework下载文件

时间:2012-02-28 13:43:50

标签: zend-framework header controller action downloading

我是Zend Framework的新手,我遇到了这样的问题。在我的网页上,我有用户要下载的产品演示。当他们想要下载它们时,他们必须填写表格(姓名,公司,电子邮件,联系电话),然后单击“提交”开始下载。我希望将它们重定向到产品页面。这是我在控制器中的showFormAction代码:

    if ($this->_request->isPost())
    {
        if (!$form->isValid($this->_request->getPost()))  
        {   
            //shows messages and the form again             
        }               
        else 
        { 

            $file = $this->findYoungestFile('/demo/'.$product.'/');
            $this->sendFileToClient($file);
            $this->_redirect('/products/'.$product);
            //sending mail
            $infoMail = new InfoMail($this->_request->getPost(), 'download', $product);
            $this->sendInfoMails($infoMail);                
        }   
    } 
    else
        //show form

这里是sendFileToClient函数

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

        readfile($file); 

重定向不起作用。我认为发送到浏览器的标题存在问题,但我不知道如何解决它。有人可以帮帮我吗?

谢谢&问候, 马乌戈热塔

1 个答案:

答案 0 :(得分:1)

当您尝试将用户重定向到另一个页面时,HTTP标头已经发送了。换句话说,您无法提供文件并同时进行重定向。好吧,至少你试图这样做的方式。