2012-03-28 4 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이 조금이 overdoes RFC 6266

+0

감사합니다. 며칠 후에 시험해 보겠습니다. – Prasad