Internet Explorer is Mangling Скачать имена файлов - PullRequest
2 голосов
/ 12 июня 2011

У меня проблема с IE8, когда URL-адреса со строками запроса искажаются при загрузке.

В частности, URL-адрес, такой как

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

Вызывает ли IE8 уведомление о загрузке файла для файла с именем Software 2.1%20Beta[1].exe

Я полностью растерялся из-за того, что первый '% 20' корректно переводится IE в пробел, но второй %20 остается как есть, а расширение отбрасывается и добавляется [1] .

Удаление завершающей строки запроса не является опцией (срок действия ссылки S3 истекает). У вас есть какие-нибудь предложения, чтобы обойти это безумие? Что-то не так с моей кодировкой URI?

1 Ответ

3 голосов
/ 15 июня 2011

Aha!

Решено путем добавления нестандартного заголовка HTTP Content-Disposition, который, помимо того, что является полным мерзостью, используется IE для переопределения любого другого фактора автоматического именования.

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

Content-Disposition принимает имя файла в кодировке ISO-Latin, т.е. не имеет смысла в кодировке HTML, но технически также не содержит символов UTF8, что для меня не проблема.

Оказывается, вы можете указать это в файловом браузере Консоли управления AWS. Хотелось бы, чтобы у него был какой-то способ автоматически обслужить заголовок Content-Disposition без необходимости включать его в каждую загрузку, которую я обслуживаю>. <</p>

EDIT:

аааа, и я говорил слишком рано. Amazon добавил функцию для этого: http://docs.amazonwebservices.com/AmazonS3/latest/API/index.html?RESTObjectGET.html, в которой можно вручную запросить, чтобы файл был доставлен с определенным заголовком Content-Disposition, что означает, что Amazon и команда AWS действительно работают!

...