2012-02-28 2 views
1

Я новичок в Zend Framework, и у меня есть такая проблема. На моей веб-странице у меня есть демонстрация продуктов, которые будут загружаться пользователями. Когда они захотят загрузить их, они должны заполнить форму (имя, компания, адрес электронной почты, контактный телефон), а затем нажмите «Отправить», чтобы начать загрузку. Я бы хотел, чтобы они были перенаправлены на страницу продукта. Вот мой showFormAction код в контроллере:Загрузка файлов с Zend Framework

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); 

Перенаправление не работает. Я полагаю, что проблема связана с заголовками, отправленными в браузер, но я не знаю, как их решить. Может ли кто-нибудь помочь мне, пожалуйста?

Благодарности & С уважением, Малгожата

+0

Что вы подразумеваете под "не работает"? Какой результат вы получаете? – mingos

+0

Он отправляет файл в браузер, отправляет электронное письмо, но не перенаправляет его, оставаясь на той же странице. – gosia

+0

Ох. Переадресация также является заголовком. Не действует после того, как вы уже отправили заголовок загрузки файла :). – mingos

ответ

1

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

+0

Хорошо, у вас есть решение? Интересно, могу ли я сделать два действия для этой загрузки. Один будет отвечать за отправку файла, а другой - за перенаправление. – gosia

+0

Вы можете перенаправить на первую страницу, а затем, скажем, или js, поставьте файл. – akond

+0

Мне бы хотелось сделать загрузку файла через zend. – gosia

Смежные вопросы