2012-09-27 6 views
0

나는 symfony 1.4와 함께 프로젝트를 가지고 있으며 .csv 파일로 mysql 테이블을 내보내고 서버에서 다운로드하고, 지역 개발을 위해 Wampserver를 사용하고 있습니다. 모든 것이 정상적으로 작동합니다. 하지만 프로덕션 서버에 업로드 할 때 데이터를 내보내려고하면 .csv 파일을 저장하거나 열 것인지 묻지 않고 브라우저에서 자동으로 열립니다. CSV는 브라우저 나에게 개방의 옵션을 제공하거나 지금, 저장,이 코드의 문제, 서버 또는 아무것도의 설정이며 내가이 일을 확인 내 로컬 서버에서 반복이symfony 파일을 다운로드하십시오.

$this->setLayout(false); 
sfConfig::set('sf_web_debug', false); 
$this->getResponse()->setHttpHeader('Content-Type', 'text/csv'); 
$this->getResponse()->setHttpHeader('Content-Disposition', 'attachment; filename="file.csv"'); 
$this->getResponse()->setHttpHeader('Pragma', 'no-cache'); 
$this->getResponse()->setHttpHeader('Expires', '0'); 
readfile(sfConfig::get('sf_upload_dir') . "/export/file.csv"); 
return sfView::NONE; 

입니다 ??

파일이 utf-8 인코딩으로 저장됩니다. 이것이 문제입니까 ??

감사

의견에
+1

'application/csv'를 콘텐츠 유형으로 사용해 보셨습니까? – j0k

+0

'Content-Disposition' 헤더가 클라이언트에게 올바르게 전송 되었습니까? 서버는 응답을 다시 보내기 전에 헤더를 수정할 수 있습니다. – 1ed

+0

[PHP를 사용하여 파일을 다운로드하도록 강요] 가능한 복제본 (http://stackoverflow.com/questions/1465573/forcing-to-download-a-file-using-php) – j0k

답변

0

감사합니다, 나는 그것이 작동 얻을 수있는, 내가 한 일은 제안 @ j0k과 콘텐츠 유형을 변경하고 readfile 기능

$this->getResponse()->setHttpHeader('Content-Type', 'application/csv'); 
$this->redirect('/uploads/export/file.csv'); 
을 사용하는 대신 파일로 리디렉션했다

지금이 작동

감사

+0

그러면 대답을 받아 들여야합니다;) – pankar

0

리디렉션하지 않고 그것을하는 또 다른 방법은 다음과 같다 :

$this->getResponse()->clearHttpHeaders(); 
    $this->getResponse()->setHttpHeader('Content-Description','File Transfer'); 
    $this->getResponse()->setHttpHeader('Content-Type', 'application/csv'); 
    $this->getResponse()->setHttpHeader('Content-Disposition','attachment;filename='.$file_name); 
    $this->getResponse()->setHttpHeader('Pragma', ''); 
    $this->getResponse()->setHttpHeader('Cache-Control', ''); 
    $this->getResponse()->sendHttpHeaders(); 
    $this->renderText($fwrite('php://output',$stuff)); 

여기서 파일을 저장하거나 'php : // output'에 저장하십시오.

관련 문제