2015-02-10 2 views
1

Я могу видеть, правильно имя файла в Chrome, но не в IE получает закодированный формат файладиспозиция не понимает IE, но работает с Chrome

(например =?UTF-8?B?5qWt55WM5pSv5Ye6UERGXzIwMTUwMjEwMTEwNjIy?=).

fileName = "=?UTF-8?B?" + new String(Base64.encodeBase64(fileName.getBytes("UTF-8")), "UTF-8") + "?="; 

Пожалуйста, помогите мне в этом.

+0

возможно дубликат [Как отобразить не-ASCII файла в файловом окне загрузки в браузерах?] (Http://stackoverflow.com/questions/149058/how-to-display-a-non- ascii-filename-in-the-file-download-box-in-browsers) –

+0

Привет, Adam, спасибо за входные данные. мы попробовали ваш вариант, но столкнулись с той же проблемой. – user3714194

ответ

0

Для этого нет хорошего кросс-браузерного решения. Я нашел красиво названную статью Test Cases for HTTP Content-Disposition header field (RFC 6266) and the Encodings defined in RFCs 2047, 2231 and 5987, в которой суммируется поддержка разных браузеров. Хотя я не мог ничего увидеть на используемом вами механизме base64.

Существует много разных вариантов, попробуйте использовать форму кодировки URL, см. http://greenbytes.de/tech/tc2231/#attwithfn2231utf8. Пример

Content-Disposition: attachment; filename*=UTF-8''foo-%c3%a4-%e2%82%ac.html 

Это требует более эффективной поддержки, если вы хотите только> IE8

FF22 pass 
MSIE8 unsupported 
MSIE9 pass 
Opera pass 
Saf6 pass 
Konq pass 
Chr25 pass 

В зависимости от того, какая версия IE вы надеетесь, чтобы поддержать вас, возможно, придется сделать некоторые грязные user_agent нюхают и отправить заголовок.

if (isUserAgentIe(requestHeaders)) { 
    fileName = ... 
} else { 
    fileName = ... 
} 
+0

Привет, Адам, я добавил содержание и стиль, столкнувшись с той же проблемой. – user3714194

+0

Какая именно версия Internet Explorer вызывает эту проблему? – Adam

+0

Привет, Adam, я пробовал все версии IE и сталкивался с той же проблемой. – user3714194

Смежные вопросы