2009-09-28 4 views
3

IE8에서 세미콜론으로 파일 이름을 다운로드하려고 할 때 문제가 있습니다. 그 attachment.File.FileName = 가정내용 처리 파일 이름의 세미콜론

Response.AddHeader("Content-Disposition", "attachment; filename=\"" + attachment.File.FileName + "\""); 

"시험, 시험, TEST.TXT"

FF 3.5 : 그것은 당신이 저장/이름 "테스트 파일을 열어하라는 메시지를, 시험, 시험. txt ". 이것이 바람직한 결과입니다.

IE8 : "Test"라는 이름으로 파일을 저장/열기하라는 메시지가 나타납니다.

IE8에서 원하는 결과를 얻는 방법을 알아야합니다.

답변

2

다음과 같은 이스케이프 시퀀스를 사용하여 테스트를 수행 했습니까? (% 3B)?

Response.AddHeader("Content-Disposition", "attachment; filename=\"file%3Bfile%3B.txt\""); 
+1

: 퍼센트 인코딩 만 RFC2231에 의해 허용되어 있지만,이 또한 사용하고 주연하는 데 필요한 않으며, 두 개의 꼭대기 :'filename * = utf-8'en'name % 20with % 20percent % 20encoding' – lapo

+3

이것은 IE 고유의 구문입니다. 하지마. –

+0

질문은 매우 명확합니다 : "IE8에서 원하는 결과를 얻는 방법을 알아 내기". Internet Explorer는 RFC를 사용하지 않으므로 특정 브라우저에서이 기능을 사용하려면 특정 패치를 포함해야합니다. – Rodrigo

-1

IE의 조건을 확인하고 URLEncoder.encode를 사용하십시오. 효과가있을 것입니다.

예 : 실제로 인터넷 익스플로러 작동 않지만이 RFC는 (예를 들어 파이어 폭스) 다음 그 브라우저에서 생겼습니다 if (isIE) { fileName = URLEncoder.encode(fileName, "UTF-8"); }

+0

No. 특수 케이싱 UA를 사용하지 마십시오. 장기적으로 (유지 보수되지 않은/테스트되지 않은 코드 브랜치와 같이) 많은 피해를 초래합니다. –

+0

불행히도 콘텐츠 기밀 파일 이름은 다른 브라우저에서 일관되게 처리되지 않습니다. nonascii 파일 이름을 처리하려는 경우 스니핑을 피할 수 없습니다. – Antimony