Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Изменение имени файла при скачивании


Автор: Mikamj 28.2.2007, 18:32
Возник subj:

в сервлете в респонз передаю поток байт (файл):

Код

byte[] byteArray = file.getFile();

response.setCharacterEncoding("utf-8");
response.setHeader("Content-length", Long.toString((long) byteArray.length));
response.setHeader("Content-type", "application/octet-stream");
response.setHeader("Content-Transfer-Encoding", "binary");
response.setHeader("Content-disposition", "attachment; filename = \"" + MimeUtility.encodeText(file.getName(), "utf-8", null) + "\"");

OutputStream binout = response.getOutputStream();
binout.write(byteArray, 0, byteArray.length);
binout.close();


MimeUtility - класс из пакета javax.mail.internet, метод encodeText используется для кодирования текста RFC822 в RFC2047, т.к. в имени файла могут содержаться не US-ASCII символы.

Если в имени скачиваемого файла присутствуют русские буквы, то IE генерирует свое имя для файла, наподобие GF5XE1AZ. В Firefox такой проблемы нет: какое имя файла получил методом file.getName(), такое имя и появляется в диалоговом окне браузера при скачивании файла. В Opera имя файла - "=".

Автор: AntonSaburov 28.2.2007, 18:54
Я делал такой вариант выбора имени файла, правда без русских букв и я не заключал имя файла в кавычки - не было надобности. 
Если найдется решение или что-то еще - было бы очень интересно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)