Звучит так, как будто вы доморощенный анализатор multipart/form-data
. Я бы не рекомендовал это делать. Скорее используйте приличный, такой как Apache Commons FileUpload . Для загруженных файлов предлагается FileItem#getContentType()
для извлечения указанного пользователем типа контента, если таковой имеется.
String contentType = item.getContentType();
Если он возвращает null
(только потому, что клиент не указал его), тогда вы можете воспользоваться ServletContext#getMimeType()
на основе имени файла.
String filename = FilenameUtils.getName(item.getName());
String contentType = getServletContext().getMimeType(filename);
Это будет решено на основе <mime-mapping>
записей в файле сервлетконтейнера по умолчанию web.xml
(в случае, например, Tomcat, он присутствует в /conf/web.xml
), а также на web.xml
вашего веб-приложения, если таковое имеется, что может разверните / переопределите сопоставления по умолчанию для контейнеров сервлетов.
Однако необходимо помнить, что значение многоэлементного типа контента полностью контролируется клиентом, а также что предоставляемое клиентом расширение файла не обязательно должно представлять фактическое содержимое файла. Например, клиент может просто отредактировать расширение файла. Будьте осторожны при использовании этой информации в бизнес-логике.
Связанный: