一尘不染

JSP:在文件上载时获取MIME类型

jsp

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

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

String contentType = req.getContentType();

它将返回:

多部分/表单数据;边界= --------------------------- 310662768914663

如何获得正确的值?

提前致谢


阅读 392

收藏
2020-06-08

共1个答案

一尘不染

听起来好像您在本地开发一个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>servlet容器默认值web.xml(例如Tomcat,在中出现/conf/web.xml)中的条目web.xml以及您的Web应用程序(如果有)的条目进行解析,这些内容可以扩展/覆盖servlet容器的默认映射。

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

2020-06-08