Пустое пространство в имени файла при загрузке файла

для загрузки запрошенного файла журнала используется следующий java-код:

    protected HttpServletResponse response;
....

    response.setContentType("application/octet-stream");
    String filename = OrgName + ".log";
    response.setHeader("Content-Disposition", "attachment; filename= " + filename);
    OutputStream os = response.getOutputStream();
    os.write(getFile());
    os.close();

проблема приходит, когда OrgName содержит пробел, например "Xyz Pvt Ltd", в этом случае файл будет загружен с именем" Xyz", а не " Xyz Pvt Ltd.бревно."Часть имени после 1-го пробела игнорируется. Обратите внимание, что файл загружен правильно, это только имя, которое не отображается правильно. Я что-то делаю не так? или это стандарт поведение?

среда: Стойки 2, Jboss 5.1.0, Mozilla Firefox 3.5.3

2 ответов


Кажется, я нашел твою проблему. Просто установите строку имени файла в кавычки

response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\"");

Это должно решить вашу проблему.


Я думаю, вам придется использовать кодировку для пробелов, которые вы можете посмотреть в Apache base64 encoder, я помню, что пробелы кодируются до %20%, и, таким образом, при декодировании вы сможете получить имя файла с пробелами.