java - JSP:在文件上传时获取 MIME 类型

标签 java jsp servlets file-upload mime-types

我正在上传文件,我想从上传的文件中获取 Mime 类型。

我试图使用 request.getContentType(),但是当我调用时:

String contentType = req.getContentType();

它将返回:

multipart/form-data; boundary=---------------------------310662768914663

如何获得正确的值?

提前致谢

最佳答案

这听起来好像你在家里种植 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>解决servletcontainer 默认条目 web.xml (例如,对于 Tomcat,它存在于 /conf/web.xml 中)并且也在 web.xml 中你的 webapp,如果有的话,它可以扩展/覆盖 servletcontainer 的默认映射。

但是您需要记住,多部分内容类型的值完全由客户端控制,并且客户端提供的文件扩展名不一定需要代表实际文件内容.例如,客户端可以只编辑文件扩展名。在业务逻辑中使用此信息时要小心。

相关:

关于java - JSP:在文件上传时获取 MIME 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5096862/

相关文章:

servlets - 向与数据库交互的 Servlet 提交表单会导致空白页面

java - 一遍又一遍地询问相同的 Android Studio 权限

java - 修复具有多个视口(viewport)的窗口中的严重闪烁

java - 在构造函数 JPQL 中使用 Case

java - gradle + spring MVC + spring boot + jsp = 404错误?

java - 有效地使用 JSP 标签获取 java 代码中的空值

java servlet : run a method in server when webpage finish onload

java - 无法从第二类访问数据库助手

java - 迭代 map 时为struts迭代器指定范围

java - 为什么 Jython Servlet post 请求中 fieldStorage 为空