2012-03-28 2 views
1

Я пытаюсь доставить CSV-файл через действие. Тип mime в ответе по-прежнему отображается как text/html. Может кто-нибудь помочь? СпасибоОтправить вложение/Загрузить файл из действия Symfony

 //$this->setLayout(false); 
     //$this->getUser()->shutdown(); 
     //sfConfig::set('sf_web_debug', false); 
     $response = $this->getContext()->getResponse(); 
     $response = $this->getResponse(); 
     $response->clearHttpHeaders(); 
     $response->setHttpheader('Pragma: public', true); 
     $response->addCacheControlHttpHeader('Cache-Control', 'must-revalidate'); 
     $response->setContentType('application/octet-stream', true); 
     $response->setHttpHeader('Content-Description', 'File Transfer'); 
     $response->setHttpHeader('Content-Transfer-Encoding', 'binary', true); 
     $response->setHttpHeader('Content-Length', filesize($file_path)); 
     $response->setHttpHeader('Content-Disposition', 'attachment; filename="' . $file_name . '"'); 
     $this->getResponse()->sendHttpHeaders(); 
     //$response->setContent(file_get_contents($file_path)); 
     //readfile($file_path); 
     $this->renderText(file_get_contents($file_path)); 
     //return sfView::NONE; 

     return sfView::HEADER_ONLY; 

Поверьте мне, прежде чем попасть сюда, у меня есть все результаты поиска фиолетовый. Как вы можете видеть все перестановки & комбинаций выше, я все еще не мог получить эту работу!

+0

Это переусердствовал это немного - HEADER_ONLY и sendHttpHeaders не должно быть необходимости, но остальное является хороший обзор того, что нужно, чтобы служить как статический файловый сервер. – aredridel

ответ

6

Попробуйте что-то вроде этого:

$path = 'absolute/path/to/the/file'; 

/** @var $response sfWebResponse */ 
$response = $this->getResponse(); 

$response->setContentType('text/csv'); 
$response->setHttpHeader('Content-Disposition', 'attachment; filename="' . basename($path) . '"'); 
$response->setContent(file_get_contents($path)); 

return sfView::NONE; 

Примечание: имя файла должно быть ASCII см RFC 6266

+0

спасибо, попробуем это через пару дней! – Prasad

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