Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSP:在文件上载时获取MIME类型_Java_Jsp_Servlets_File Upload_Mime Types - Fatal编程技术网

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

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) 你可以用

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

我试图使用请求。getContentType(),但调用时:

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);