기타

IE7에서의 파일(excel등) 다운로드 이상

시반 2008. 1. 16. 11:50

1. execCommand('SaveAs') 의 차단

 

IE6에서는 javascript로 문서를 저장시 execCommand('SaveAs')를 사용할수 있었다.
html, text뿐만 아니라 execCommand("SaveAs","false","test.xls")이런 방법으로 Table을 엑셀파일로도 저장할 수 있었던 것.
하지만 IE7부터는 execCommand등의 몇몇 메소드에 대하여 제한을 두고 있기 때문에 더이상 이런방법으로

엑셀형태로 다운로드 할 수 없게 되었다.(html,text 파일로는 저장이 된다고 하네요...)

 

 

2. context-type 설정을 통한 파일 다운로드의 제한

 

다른 방법으로 엑셀파일로 다운로드 하고자 할때 다음과 같은 헤더를 사용한다.

header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=test.xls");
header("Content-Description: PHP4 Generated Data");

 

그렇게 되면 헤더를 먼저 뿌려주고, 데이터를 출력해서 엑셀형태로 다운받게 된다.

그런데, 위와 같은 동일한 코드에서 IE6 에서는 정상적으로 다운로드 받지만,
IE7 에서는 다운받지 못하는 현상이 있다.


##########0*

 

위와 같이 다운로드를 시도하는데, 끝내 다운받지 못한다.

흐음 이부분은 해결방법이 상당히 묘하다. 그말은 딱히 정확한 원인을 알수 없다는 것이다.

정책상의 변화로 인한 파일 다운로드문제인지 다른 문제인지..

 

왜냐하면 내 경우에는 모달창에서 검색된 로그나 상태값을 엑셀로 저장하고자 할때 위와 같은

문제가 발생했지만 다른  pc에서는 이상없이 다운로드 되었기 때문이다.

모달창이 아닌 메인창에서 호출하거나 새창으로 연 경우에는 동일코드로 이상없이 작동되었다.

 

모달창의 경우엔 그외에도 새창으로 열기에서는 발생하지 않았던 ocx등의 오동작등이 보이는걸보면

모달창에 대한 정책변경이 있었던 듯 싶지만. 관련된 정보는 확인할 수 없었다.

 

한글명의 경우 XP의 IE7은 고급택스트서비스와의 충돌로 인하여 위와 같은 현상이 발생할 수도 있다고한다.

(아니면 나와 같이 3벌식을 쓰는 경우이거나..이땐 대책없다.ㅋㅋ)

즉 vista의 IE7인 경우 정상적 작동

이에 대한 해결방법은  [제어판] - [국가 및 언어] - [언어] 자세히 -

 [텍스트 서비스 및 입력언어창] - [고급] 선택 - [고급텍스트 서비스 사용안함] 선택

을 통해서 해결할 수 있다

 

3. 해결?

일단 앞서 말한바와 같이 모든 경우에 동일한 결과가 나타나지 않을 뿐더러 원인에 따라 해결방법이 있기도 없기도 하다는

점이 문제다. 2.번의 경우 jsp가 아닌 서블릿으로 처리하는 경우 대부분 이상없이 다운로드 받을 수 있었다.

아니면 jxl을 통해 파일을 생성후 다운로드 받도록 하는 방법도 생각해 볼만하다.