Я хочу вернуть файл с кириллическим именем.
Теперь мой код выглядит следующим образом:
@GetMapping("/download/{fileId}")
public void download(@PathVariable Long fileId, HttpServletResponse response) throws IOException {
...
response.setContentType("txt/plain" + "; charset=" + "WINDOWS-1251");
String filename = "русское_слово.txt";
response.addHeader("Content-disposition", "attachment; filename=" + filename);
response.addHeader("Access-Control-Expose-Headers", "Content-disposition");
//...
}
Когда я обращаюсь к URL из браузера - браузер предоставляет мне диалог для сохранения файла на диске, ноон показывает _
вместо символов кириллицы.
Похоже, что это проблема кодировки заголовка ответа:
{
"access-control-expose-headers": "Content-disposition",
"content-disposition": "attachment; filename=???_??.txt",
"date": "Fri, 28 Dec 2018 15:53:44 GMT",
"transfer-encoding": "chunked",
"content-type": "txt/plain;charset=WINDOWS-1251"
}
Я попробовал следующий вариант:
response.addHeader("Content-disposition", "attachment; filename*=UTF-8''" + filename);
и следующее:
response.addHeader("Content-disposition", "attachment; filename*=UTF-8''" + URLEncoder.encode(filename,"UTF-8"));
но это не помогает
Как я могу решить эту проблему?