Пустое место в имени файла при загрузке файла - PullRequest
7 голосов
/ 04 ноября 2011

Следующий код 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.log". Часть имени после 1-го пробела игнорируется.Обратите внимание, что файл загружен правильно, это только имя, которое отображается неправильно.Что-то я делаю не так?или это стандартное поведение?

Среда: Struts 2, Jboss 5.1.0, Mozilla Firefox 3.5.3

Ответы [ 2 ]

14 голосов
/ 04 ноября 2011

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

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

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

0 голосов
/ 04 ноября 2011

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

...