Java JSP:在文件上载时获取MIME类型
我正在上传文件,我想从上传的文件中获取Mime类型 我试图使用请求。getContentType(),但调用时:Java JSP:在文件上载时获取MIME类型,java,jsp,servlets,file-upload,mime-types,Java,Jsp,Servlets,File Upload,Mime Types,我正在上传文件,我想从上传的文件中获取Mime类型 我试图使用请求。getContentType(),但调用时: String contentType = req.getContentType(); 它将返回: 多部分/表格数据;边界=------------------------------------310662768914663 如何获得正确的值 提前感谢只需使用: public String ServletContext.getMimeType(String file) 你可以用
String contentType = req.getContentType();
它将返回:
多部分/表格数据;边界=------------------------------------310662768914663
如何获得正确的值
提前感谢只需使用:
public String ServletContext.getMimeType(String file)
你可以用
但是,如果文件类型尚未列出,则编辑mime.types文件会增加开销。(很抱歉,我收回这一点,因为您可以通过编程方式将实例添加到映射中,这将是它检查的第一个位置)听起来好像您正在自行开发一个
多部分/表单数据
解析器。我不建议这样做。不如用一个像样的。对于上载的文件,它提供了一种方法来提取客户端指定的内容类型(如果有)
String contentType = item.getContentType();
如果它返回null
(只是因为客户机没有指定它),那么您可以根据文件名使用它
String filename = FilenameUtils.getName(item.getName());
String contentType = getServletContext().getMimeType(filename);
这将基于servletcontainer的默认web.xml
中的
条目(例如,对于Tomcat,它出现在/conf/web.xml
中)以及您的webapp的web.xml
中(如果有)来解决,这可以扩展/覆盖servletcontainer的默认映射
但是,您需要记住,多部分内容类型的值完全由客户端控制,并且客户端提供的文件扩展名不一定需要表示实际的文件内容。例如,客户端可以只编辑文件扩展名。在业务逻辑中使用此信息时要小心
相关的:
MultipartFile attachmentFile=multipartRequest.getFile(“filename”)
指定'application/octet stream'
,并且只有getServletContext()。getMimeType(filename)
给了我真正的内容类型。
String filename = FilenameUtils.getName(item.getName());
String contentType = getServletContext().getMimeType(filename);