【问题标题】:finding file extension by java code通过java代码查找文件扩展名
【发布时间】:2012-03-11 11:56:28
【问题描述】:

假设用户可以上传文件,我想找到上传文件的扩展名。 即使用户重命名了文件的扩展名,我也想通过它的标题或字节码..等找到该文件的真正扩展名。

请帮我解决一下。

注意: 不只是 substring() 或 getContentType() 的扩展名,而是真正的文件扩展名, 例如(在 Windows 中),它是一个 .doc 文件,用户将其重命名为 .jpg 并上传。 它可能在 php 中,但我不知道如何在 java 中做到这一点!但这是可以完成的。 谢谢。

【问题讨论】:

  • 我没有提到 getContentType()!这是不同的
  • 在不了解内容类型的情况下,你怎么知道“真正的”扩展是什么?
  • 要求不是内容类型,从来都不是。假设用户将扩展名从 .jpg 编辑为 .gif,内容类型将返回 image/gif 或 image/jpg ??

标签: java file-upload file-extension


【解决方案1】:

Apache Commons: FileUpload 是一个很好的起点。此外,您可以查看我引用的链接:JSP: Get MIME Type on File Upload 以获取有关如何执行此操作的提示。

正如用户在他们的问题中所说的那样,如果我将 .png 重命名为 .jpg,这将使 getContentType() 误以为它现在是.jpg 文件。在 google 上快速搜索提供了以下答案结果:Get the mime type from a file 列出了 3 个非常好的选项:

  1. Apache Tika

    Apache Tika™ 工具包使用现有解析器库从各种文档中检测和提取元数据和结构化文本内容

  2. JMimeMagic

    jMimeMagic 是一个 Java 库,用于确定文件或流的 MIME 类型

  3. 声称可以帮助您解决此问题的 java 库是:mime-util

    使 Java 程序能够根据文件扩展名、魔术数据和内容嗅探来检测 MIME 类型。支持从 java.io.File、java.io.InputStream、java.net.URL 和字节数组进行检测。

【讨论】:

    【解决方案2】:

    快速搜索找到了这篇文章:http://fredeaker.blogspot.com/2006/12/file-type-mime-detection.html

    这篇文章列出了几个“神奇”的库,可以根据其内容检测文件类型。

    【讨论】:

      猜你喜欢
      • 2017-08-22
      • 2011-06-18
      • 2011-11-09
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 2012-06-11
      相关资源
      最近更新 更多