2012-11-12 6 views
0

현재 클라이언트 용 웹 응용 프로그램을 구축 중입니다. 그리고 나는 원본 IE8로 xlsx 파일을 다운로드 할 수 없다. 반면 그것은 IE9의 IE8 호환 모드로 작동합니다.IE 8에서 XSLX가 제대로 다운로드되지 않습니다.

저는 symfony 1.4, php 5.2.6을 사용하고 있습니다. xslx 파일이 유효합니다.

내 코드 : 그는 웹 사이트를 찾지 못하거나 응답하지 않고, 나중에 다시 시도 할 수 있기 때문에

$this->getResponse()->clearHttpHeaders(); 
    $this->getResponse()->setHttpHeader('Pragma: public'); 
    $this->getResponse()->setContentType('application/force-download'); 
    $this->getResponse()->setHttpHeader('Content-Disposition', 'attachment; filename="Export_Excel.xlsx"'); 
    $this->getResponse()->setHttpHeader('Content-Transfer-Encoding', 'binary'); 
    $this->getResponse()->setHttpHeader('Connection', 'close'); 
    $this->getResponse()->setContent($fileData); 
    $this->getResponse()->sendHttpHeaders(); 
    $this->getResponse()->send(); 

IE 8은, 그것을 다운로드 할 수 없습니다 말한다. 이것은 동일한 ulr을 가진 빈 페이지를 표시 할 수 있기 때문에 URL 문제는 아닙니다. 또한

,이 코드

 session_write_close(); 
     $this->getResponse()->clearHttpHeaders(); 
     $this->getResponse()->setHttpHeader('Pragma: public'); 
     $this->getResponse()->setContentType('application/force-download'); 
     $this->getResponse()->setHttpHeader('Content-Disposition', 'attachment; filename="Export_Excel.xlsx"'); 
     $this->getResponse()->setHttpHeader('Content-Transfer-Encoding', 'binary'); 
     $this->getResponse()->setHttpHeader('Connection', 'close'); 

     @ob_end_clean(); 
    flush(); 


    @readfile(sfConfig::get('sf_web_dir').'/'.$filename.'.xlsx'); 
    throw new sfStopException(); 

는 그 다음 xslx 파일은 zip 파일로 다운로드됩니다. session_write_close(); 위의 코드는 그걸로 작동하지 않았기 때문에.

아이디어가 있으십니까?

내 파일을 xslx 파일로 다운로드하고 싶습니다. (이름을 변경하지 않아도 됨). 코드의 첫 번째 무리는 크롬, 파이어 폭스, IE 9, IE9 compat IE 8, IE9 compat IE7에서 작동합니다. 그러나 IE8은 아닙니다.

업데이트 2 :

그래서 문제는 다운로드 부분에 정말입니다. 내 상사가 임시로 xlsx를 csv로 바꾸라고 말했고 파일을 다운로드 할 때도 똑같은 문제가 있습니다.

IE8에서 파일 다운로드를 할 수있는 아이디어가 있습니까?

+0

아파치를 사용하고 있습니까? 그렇다면 [이 질문에 체크하십시오] (http://serverfault.com/questions/19060/why-are-docx-xlsx-pptx-downloading-from-webserver-as-zip-files). – j0k

+0

예, 있습니다. 내 상사가 당신의 솔루션을 사용하는 것 같습니다 (휴가를 보내고있는 동안).하지만 작동하지 않았습니다. 그리고 그게 버그인지는 모르겠다. readfile 앞에 버퍼의 모든 헤더와 데이터가 지워집니다. 내 문제는 코드 1 묶음에있다, 그것은 작동하고 파일을 보내야하지만 IE8 그것을 얻지 않는다. – Perello

답변

0

해결책을 찾았습니다. 이해하기는 쉽지만 찾기가 매우 어렵습니다.

내 다운로드는 pdf 내보내기와 마찬가지로 window.open을 사용하여 javascript에 의해 호출되었습니다. 그러나 새 창에서 IE8은 강제 다운로드를 무시하고 표시하려고 시도합니다. 그래서 그것은 pdf와 함께 작동합니다. 그러나 표시 할 수없는 확장 프로그램을 사용하면 충돌이 발생합니다.

그래서 해결책은 간단한 링크 나 window.location.href =를 사용하여 제 경우와 같이 동적 arg를 줄 필요가있을 때입니다.

관련 문제