Томагавк t:inputFileUpload
построен поверх Apache Commons FileUpload и Apache Commons IO . В FAQ по FileUpload вы можете найти запись под названием «Почему FileItem.getName () возвращает весь путь, а не только имя файла?» , который содержит следующий ответ:
Internet Explorer предоставляет полный путь к загружаемому файлу, а не только базовое имя файла. Поскольку FileUpload предоставляет именно то, что было предоставлено клиентом (браузером), вы можете удалить эту информацию о пути в вашем приложении. Вы можете сделать это, используя следующий метод из Commons IO (который у вас уже есть, так как он используется FileUpload).
String fileName = item.getName();
if (fileName != null) {
filename = FilenameUtils.getName(filename);
}
Короче, просто используйте FilenameUtils#getName()
, чтобы избавиться от полного пути, который был излишне добавлен MSIE (все другие реальные / обычные веб-браузеры не добавляют полный путь на стороне клиента, а просто предоставляют единственное имя файла как согласно спецификациям HTML-форм).
Итак, все, что вам в основном нужно сделать, это заменить
String fileName = upFile.getName();
по
String fileName = FilenameUtils.getName(upFile.getName());