有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

String contentType = req.getContentType();

它将返回:

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

如何获得正确的值

提前谢谢


共 (3) 个答案

  1. # 1 楼答案

    你可以用MimetypesFileTypeMap

    String contentType = new MimetypesFileTypeMap().getContentType(fileName)); // gets mime type
    

    但是,您会遇到编辑mime的开销。如果文件类型尚未列出,则键入文件。(抱歉,我收回这一点,因为您可以通过编程方式将实例添加到映射中,这将是它检查的第一个位置)

  2. # 2 楼答案

    只需使用:

    public String ServletContext.getMimeType(String file)
    
  3. # 3 楼答案

    听起来就像是在家里种植一个multipart/form-data解析器。我不建议这样做。而是使用一个像样的Apache Commons FileUpload。对于上传的文件,它提供了一个^{}来提取客户端指定的内容类型(如果有的话)

    String contentType = item.getContentType();
    

    如果它返回null(仅仅因为客户端没有指定它),那么您可以根据文件名利用^{}

    String filename = FilenameUtils.getName(item.getName());
    String contentType = getServletContext().getMimeType(filename);
    

    这将基于servletcontainer的默认web.xml中的<mime-mapping>条目(例如Tomcat,它存在于/conf/web.xml)以及您的webapp的web.xml条目(如果有)来解决,这些条目可以扩展/覆盖servletcontainer的默认映射

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

    相关: