Скачивание файлов с Zend Framework - PullRequest
1 голос
/ 28 февраля 2012

Я новичок в 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 Ответ

1 голос
/ 28 февраля 2012

К тому времени, когда вы пытаетесь перенаправить пользователя на другую страницу, HTTP-заголовки уже отправлены.Другими словами, вы не можете предоставить файл и одновременно выполнить перенаправление.Ну, по крайней мере, так, как вы пытаетесь это сделать.

...