Кодировка заголовков apache FileUpload и HttpClient - PullRequest
1 голос
/ 16 марта 2011

Вопрос о серваке apache FileUpload ...

Я давно ищу этот ответ, но так как ничего не помогло, мне нужно получить ваш совет. У меня есть сервлет, который загружает FileItems ... Дело в том, что я хочу отправить имя файла с заголовком. Это довольно хорошо с буквами имени файла, но все идет не так с буквами имени файла не. Например, если я получаю русское имя файла, сервлет получает имя файла как «<80-9 ~ .flv» или что-то в этом роде ... io.File не хочет сохранять его как имя файла, потому что «это не файл название" :) Вопрос в том, как управлять кодировкой заголовков, если сервлет получает заголовки от HttpClient? </p>

1 Ответ

1 голос
/ 16 марта 2011

Первое, что вы должны сделать, это установить кодировку на странице клиента в "UTF-8" -

post.addRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=UTF-8");

А также на вашем UploadServlet сделать -

 // Set character encoding in request
 request.setCharacterEncoding("UTF-8");

 // Get the file name after removing the path(this will ensure that you get the correct 
 //file name even in IE which sends the whole path)

 String fileName = org.apache.commons.io.FilenameUtils.getName(fileItem.getName());

Установка его в формате UTF-8 гарантирует, что все кириллические символы в имени файла также будут работать.

...