当前位置: 首页 > 知识库问答 >
问题:

如何从Java中的MIME类型确定合适的文件扩展名

吕冠宇
2023-03-14

我正在将文件上传到Amazon s3 bucket,并且可以访问InputStream和一个包含文件的MIME类型但不是原始文件名的字符串。在将文件推到S3之前,由我来实际创建文件名和扩展名。是否有库或方便的方法从MIME类型中确定要使用的适当扩展?

我已经看到了一些关于Apache Tika库的引用,但这似乎有些过头了,我还没有能够让它成功地检测到文件扩展名。从我所能收集到的信息来看,这段代码应该可以工作,但是当类型变量为“image/jpeg”时,我只是得到了一个空字符串。

    MimeType mimeType = null;
    try {
        mimeType = new MimeTypes().forName(type);
    } catch (MimeTypeException e) {
        Logger.error("Couldn't Detect Mime Type for type: " + type, e);
    }

    if (mimeType != null) {
        String extension = mimeType.getExtension();
        //do something with the extension
    }

共有1个答案

江向阳
2023-03-14

正如一些评论者所指出的,在mimetype和文件扩展名之间没有通用的1:1映射······有些mimetype有多个可能的扩展名,许多扩展名由多个mimetype共享,有些mimetype没有扩展名。

只要有可能,您最好存储mimetype并继续使用它,而忘记扩展。

也就是说,如果您确实想为给定的mimetype获得最常见的文件扩展名,那么Tika是一个很好的方法。Apache Tika拥有大量它所知道的mimetype,对于其中的许多mimetype,它还知道用于检测、公共扩展、描述等的mime magic。

  MimeTypes allTypes = MimeTypes.getDefaultMimeTypes();
  MimeType jpeg = allTypes.forName("image/jpeg");
  String jpegExt = jpeg.getExtension(); // .jpg
  assertEquals(".jpg", jpeg.getExtension());
  TikaConfig config = TikaConfig.getDefaultConfig();
  MimeTypes allTypes = config.getMimeRepository();
 类似资料:
  • 问题内容: 我正在将文件上传到Amazon s3存储桶,并可以访问InputStream和一个包含文件的MIME类型而不是原始文件名的字符串。在将文件推送到S3之前,实际由我决定要创建文件名和扩展名。是否有一种库或便捷的方法来确定要从MIME类型使用的适当扩展名? 我已经看到了对Apache Tika库的一些引用,但是这似乎有点过头了,而且我还无法获得它来成功检测文件扩展名。从我已经收集到的内容来

  • 问题内容: 假设给了我一个URI,并且我想找到返回的文件的文件扩展名,那么我必须在Java中做什么。 例如,位于http://www.daml.org/2001/08/baseball/baseball- ont 的文件为http://www.daml.org/2001/08/baseball/baseball- ont.owl 当我做 我无法看到带有扩展名的完整文件名,以及如何获取文件扩展名。`

  • 问题内容: 我正在开发具有自己文件格式的Linux应用程序。当您双击那些文件时,我希望打开我的应用程序。 如何在Linux上注册文件扩展名并将其与我的应用程序关联?我正在寻找一种标准方法(可用于基于GNOME和KDE的系统),并且可以在首次安装或运行程序时自动完成。 问题答案: 从freedesktop.org Portland 使用。 注册MIME类型的图标: 创建一个配置文件(freedesk

  • 问题内容: 我正在学习swift,并制作了一个表格,其中包含显示图像的单元格,以及按MIME TYPE(使用路径扩展名)分组的类。我有一个关于扩展的问题。如果图像(例如,可能是视频或pdf)是从Internet上获取的,我不确定它们是否具有扩展名, 如何在不使用路径扩展名的情况下获取文件系统中文件的MIME类型? PS:很抱歉我的英语不好,这不是我的母语 问题答案: 假设您以NSData的形式接收

  • 问题内容: 我正在向程序中添加一些功能,以便可以通过读取MIME数据来准确确定文件类型。我已经尝试了几种方法: 方法1: 方法2: 方法3: 我在http://www.rgagnon.com/javadetails/java-0487.html上找到了这三种方法。但是我的问题是,我正在测试这些方法的文件是我创建的文件,所以我知道它是一个Excel文件,但是除第一个方法(我认为这是由于该方法使用的内

  • 问题内容: 我只是想知道大多数人如何从Java文件中获取mime类型?到目前为止,我已经尝试了两个工具:。 第一个给我内存异常,第二个没有正确关闭其流。我只是想知道其他人是否拥有他们使用和正常工作的方法/库? 问题答案: 不幸, 之所以无法使用,是因为URL的这种使用将文件锁定了,例如,它是不可删除的。 但是,你有: 还有以下内容,其优点是不仅可以使用文件扩展名,而且还可以浏览内容 但是,正如上面