2014-12-01 2 views
2

Я загружаю файл blob из HTML-формы в базу данных MySQL с помощью JSP. Мне нужно вставить имя файла в БД. Я знаю, что имя файла хранится в заголовке Content-Disposition, как я могу это получить? Заранее спасибо!Получить имя файла из Content-Disposition

ответ

10

Если вы загрузили файл, используя JavaEE 6 с HttpServletRequest.getPart:

Part part = request.getPart("xxx"); // input type=file name=xxx 
String disposition = part.getHeader("Content-Disposition"); 
String fileName = disposition.replaceFirst("(?i)^.*filename=\"?([^\"]+)\"?.*$", "$1"); 

Part См.


Как упоминалось в @Marc, я не рассматривал кодирование URL. (Он также сделал кавычки вокруг имени файла необязательно.)

fileName = URLDecoder.decode(fileName, StandardCharsets.ISO_8859_1); 

не установлен, но кодирование HTTP заголовков должен быть по умолчанию ISO-8859-1.

+0

Спасибо! На всякий случай кто-то еще пытается это сделать: он работал для меня с помощью контроллера останова Apache CXF и получения «части» в качестве вложения из объекта MultipartBody. – matthieusb

+0

Вам также необходимо декодировать имя файла, как оно (URL?) Закодировано. – Marc

+0

@Marc спасибо, не проверен в дикой природе, но я согласен. Я возложил на тебя вину. –

Смежные вопросы