2010-01-28 6 views
2

내가 개발해온 Webapp는 사용자가 불투명 한 blob로 취급 될 파일 유형을 업로드하고 다운로드 할 수있게합니다. 내 응용 프로그램은 다른 용도로는 일반적으로 사용되지 않는 파일 확장자를 제공하고 MIME Content-Type이 application/octet-stream이라는 것을 지정합니다.IE6은 "유용하게"다운로드 된 파일에 접미사를 덧붙입니다.

내부적으로 파일은 단일 압축 파일을 포함하는 간단한 Zip 아카이브입니다. 내가 발견 한 것은 IE6이 파일의 내용을 검사하고, 그것이 Zip 아카이브이고, "유용하게"추가로 ".zip"확장자로 저장한다는 것입니다. 믿을 수 없는!

앞서 말했듯이이 파일은 불투명하기 때문에 사용자가 파일 내부를 파고 들기를 원하지 않습니다. 위험하거나 민감한 정보가 포함되어 있지 않기 때문에 그들을 혼란스럽게합니다. 필자는 IE6의 인식을 막기 위해 Zip 콘텐츠에 마법 번호를 붙이기를 제안했지만, 관리자는 파일 내용이 변경되지 않은 채로 있으면 파일을 바꿀 수 있기 때문에 파일을 바꾸고 내용을 zip 아카이브로 검사 할 수 있다고합니다. , 필요하다면.

IE6에서 파일을 벗어난 상태로 유지할 수있는 방법이 있습니까? 아니면 대체 접근법? (아아, 단지 IE6를 전혀 지원하지 않는 것은 옵션이 아닙니다.)

덧붙여 말하자면, IE7은 파일 이름을 존중하지만 다운로드 대화 상자에서 여전히 Zip 아카이브로 식별합니다. IE6보다 좋지만 여전히 이상적입니다.

답변

4

짧은 대답 : 정확한 MIME 형식을 웹 서버에 추가하여 IE6에서 파일 형식을 추측하지 못하게하십시오.

긴 대답는 :

내 작품은 마이크로 소프트 파워 포인트 파일과 비슷한 문제가 있었다.

.ppt 대 .pps - 서로 다른 확장명을 가진 동일한 파일입니다. 사용자가 프로그램 (.pps)을 보길 원했지만 IE6에서는 계속해서 프로그램을 .ppt로 변경했습니다. 사용자 컴퓨터에 PowerPoint가 설치되어 있고 파일이 "보였다"는 것을 이해했기 때문에이 확장 프로그램이 변경되었습니다. ppt. 왜 .pps가 아닌지 이해하지 마십시오.

IE6 외에도 웹 서버 (IIS)가 .pps 또는 .ppt의 MIME 형식을 인식하지 못했습니다. 그래서 우리는 올바른 MIME 형식을 추가하여 서버가이를 "application/octet-stream"으로 전달하지 못하게해야했습니다. 나는 "application/octet-stream"을 사용하여 IE6가 MIME 유형을 추측하려고 시도 할 것임을 이해합니다.

그래서 우리는 추가 :
.pps = "application/vnd.ms-powerpoint" 
.ppt = "application/vnd.ms-powerpoint" 

가 지금은 IE6와 함께 잘 작동합니다.

귀하의 문제를 해결하는 데 도움이되기를 바랍니다.

+0

와우, 고마워!MIME 형식을 "application/x-mycompany-ourfiletype"으로 변경하고 IE6이 작동합니다. – Sean

1

다음 헤더 플래그를 사용하십시오. Content-Disposition : attachment; filename = "yourfilename.extension"

+1

저는 이미 그렇게하고 있습니다. 나는 IE6가 내 파일 이름을 손상시키고 있다는 사실에 암묵적으로 생각했다. 단지 그 방법으로 만 제공 될 수있다. – Sean

1

이것은 known problem이며, only solution은 클라이언트 컴퓨터의 레지스트리를 편집하는 것으로 사용자에게 많은 도움이되지는 않습니다.

+0

클라이언트 컴퓨터를 바꿀 필요없이 비슷한 문제를 해결할 수있었습니다. 내 대답을 보라. – Byran

+0

해결책이 있다는 점을 잘 알고 있습니다. – jball

관련 문제