2011-06-12 5 views
2

IE8에서 쿼리 문자열이있는 URL을 다운로드 할 때 문제가 있습니다. 특히Internet Explorer에서 파일 이름을 Mangling했습니다.

,

http://domain.com/software/Software%202.1%20Beta.exe?AWSAccessKeyId=1HCB7Z221V5CV2K1ZDG2&Expires=1307910775&Signature=iQ11pHtVrFS6Up171MI1%2BK3ErPo%3D 

같은 URL라는 파일에 대한 파일 다운로드 알림을 제공하기 위해 IE8의 원인이되어 내가 완전히 왜 첫 번째 '% 20'에로 잃었어요 Software 2.1%20Beta[1].exe

는 IE에 의해 공간으로 올바르게 변환되지만, 두 번째 %20은 그대로 유지되며 확장자는 삭제되고 [1]이 추가됩니다.

후행 쿼리 문자열을 제거하는 것은 옵션이 아닙니다 (만료 S3 링크). 이 광기를 극복하기위한 제안이 있으십니까? 내 URI 인코딩에 문제가 있습니까?

+1

호기심, 잘 잡습니다. 파일 이름에'.' 다음에 후행 쿼리 문자열이있는'% 20'에 대해서만 발생하는 것으로 보입니다. – bobince

+0

그래, 다른 링크는'x % 20y % 20z.extension'로 문제없이 갈 수 있습니다. 세상에, 나는 IE가 싫어! –

답변

3

아하!

완벽한 가외 성을 제외하고는 비표준 HTTP Content-Disposition 헤더를 추가하여 해결함으로써 IE에서 다른 자동 이름 지정 요인을 무시합니다.

Content-Disposition: attachment; filename="My Program 2.1.0 Beta.exe"

내용 - 처리 즉 어떤 HTML 인코딩 말도 안되는 ISO-라틴 인코딩 파일 이름을, 필요하지만 기술적으로도 더 UTF8 문자가, 나에게 어떤 문제가되지 않습니다.

AWS 관리 콘솔의 파일 브라우저에서 지정할 수 있습니다. 오직 내가 제공하고있는 모든 다운로드에 대해 내고 다니지 않아도 Content-Disposition 헤더를 자동으로 제공 할 수있는 방법이 있었으면 좋겠다. <

편집 : 나는 너무 빨리 말을

aaaaand. 아마존은 이에 대한 기능을 추가했습니다 : http://docs.amazonwebservices.com/AmazonS3/latest/API/index.html?RESTObjectGET.html 파일을 특정 Content-Disposition 헤더와 함께 수동으로 요청할 수 있습니다. 즉, 아마존과 AWS 팀은 실제로 바위를 만듭니다!

+1

내가 할 수 있으면 나는이 10 배 더 upvote 것이다. 나에게 1 톤의 시간을 절약했다. 감사! –

+0

당신이 가장 환영합니다, @ BrentNash. –

관련 문제