Как правильно настроить сервер для корректного отображения скачиваемого файла с названием на кириллице?

Всем доброго времени суток!
Имеется сервер TomCat 7, делаю возможность скачивания файла с сервера;
Ссылка на скачивание файла имеет вид:
<a href="downloadAction.action?struts.enableJSONValidation=true&fileName=тестовый файл.jpeg&fileId=2&fileContentType=null" target="_blank">тестовый файл.jpeg</a>

Кодировка на сервер, Java-проекте и вообще везде, где можно - UTF-8.
При попытке сохранить файл браузер теряет русские символы.
При этом, если в файле server.xml из строчки
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

Убрать кодировку(URIEncoding="UTF-8"), то имена скачиваемых файлов отображаются корректно, но перестаёт работать куча всего.
Если пытаюсь отправлять имя с сервера через URLEncoder,
а в настройках struts прописываю
filename*="utf8'ru-ru'${fileName}",
то всё хорошо работает в fireFox, но Chrome называет файл "downloadAction", тот класс, который мы вызываем через ссылку.
Использовать ссылки вида .../fileName крайне не удобно из-за struts'a.
Подскажите, пожалуйста, как выйти из ситуации?
  • Вопрос задан
  • 2642 просмотра
Пригласить эксперта
Ответы на вопрос 2
berezuev
@berezuev
#define TRUE FALSE
Может стоит решить на стороне клиента?
davidwalsh.name/download-attribute
<a href="downloadAction.action?struts.enableJSONValidation=true&fileName=тестовый файл.jpeg&fileId=2&fileContentType=null" target="_blank" download="тестовый файл.jpeg">тестовый файл.jpeg</a>
Ответ написан
@Eques_Pauperem Автор вопроса
В итоге сделал так:
С сервера имя отправляю через URLEncoder, в struts добавил параметр filename*="utf8'ru-ru'${fileName}".
Так нормально имя понимает FireFox.
Ещё через атрибут
download
Указываю имя файла в ссылке, так понимает Chrome.
Осталась одна проблема: IE...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы