Зашифрованное имя файла при загрузке, а не на ожидаемом языке, т.е. на арабском - PullRequest
3 голосов
/ 25 октября 2019

Я пытаюсь скачать файл, имя которого на арабском языке. Содержимое файла написано на арабском языке, но имя загружается в зашифрованном виде при загрузке.

responseBuilder.header("Content-Disposition",
                                "attachment; filename=\"" + fileName + "\"; filename*=utf-8''" + URLEncoder
                                        .encode(fileName, "UTF-8"));

fileName на данный момент написано на арабском языке, но в ответе браузера заголовок fileName изменяется на что-то другое, например E1- (E1-(.txt

Заголовок Http-ответа:

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 10
Content-encoding: gzip
Connection: keep-alive
Cache-Control: private
Content-Disposition: attachment; filename="E1-(E1-(.txt.txt"; 
filename*=utf-8''%D9%85%D8%B1%D8%AD%D8%A8%D8%A7.txt
Expires: Mon, 26 Jul 1997 05:00:00 GMT
X-Backend: supra-prod-pdx-ff4d74bff-7srf7
X-Content-Type-Options: nosniff
X-Robots-Tag: noindex
X-Slack-Meta: proxy

Заранее спасибо.

1 Ответ

0 голосов
/ 25 октября 2019

ОК, так что на стороне пользовательского интерфейса этого можно достичь.

В заголовке ответа fileName * предоставляют закодированное значение, а в конце пользовательского интерфейса декодируют значение, используя следующий метод JS: уберите utf8 '' из строки, чтобы вы получили реальное имя файла.

window.decodeURIComponent(t.substring(t.lastIndexOf('\'')+1,t.length));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...