Java 依据文件名后缀,获取Content-Type/Mime类型

2023-11-01

枚举类代码MimeTypeEnum

import org.apache.commons.lang3.StringUtils;
import lombok.Getter;

/**
 * 依据文件后缀名返回ContentType
 * @author zzg
 *
 */
@Getter
public enum MimeTypeEnum {

    AAC("acc", "AAC音频", "audio/aac"),

    ABW("abw", "AbiWord文件", "application/x-abiword"),

    ARC("arc", "存档文件", "application/x-freearc"),

    AVI("avi", "音频视频交错格式", "video/x-msvideo"),

    AZW("azw", "亚马逊Kindle电子书格式", "application/vnd.amazon.ebook"),

    BIN("bin", "任何类型的二进制数据", "application/octet-stream"),

    BMP("bmp", "Windows OS / 2位图图形", "image/bmp"),

    BZ("bz", "BZip存档", "application/x-bzip"),

    BZ2("bz2", "BZip2存档", "application/x-bzip2"),

    CSH("csh", "C-Shell脚本", "application/x-csh"),

    CSS("css", "级联样式表(CSS)", "text/css"),

    CSV("csv", "逗号分隔值(CSV)", "text/csv"),

    DOC("doc", "微软Word文件", "application/msword"),

    DOCX("docx", "Microsoft Word(OpenXML)", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"),

    EOT("eot", "MS Embedded OpenType字体", "application/vnd.ms-fontobject"),

    EPUB("epub", "电子出版物(EPUB)", "application/epub+zip"),

    GZ("gz", "GZip压缩档案", "application/gzip"),

    GIF("gif", "图形交换格式(GIF)", "image/gif"),

    HTM("htm", "超文本标记语言(HTML)", "text/html"),

    HTML("html", "超文本标记语言(HTML)", "text/html"),

    ICO("ico", "图标格式", "image/vnd.microsoft.icon"),

    ICS("ics", "iCalendar格式", "text/calendar"),

    JAR("jar", "Java存档", "application/java-archive"),

    JPEG("jpeg", "JPEG图像", "image/jpeg"),

    JPG("jpg", "JPEG图像", "image/jpeg"),

    JS("js", "JavaScript", "text/javascript"),

    JSON("json", "JSON格式", "application/json"),

    JSONLD("jsonld", "JSON-LD格式", "application/ld+json"),

    MID("mid", "乐器数字接口(MIDI)", "audio/midi"),

    MIDI("midi", "乐器数字接口(MIDI)", "audio/midi"),

    MJS("mjs", "JavaScript模块", "text/javascript"),

    MP3("mp3", "MP3音频", "audio/mpeg"),

    MPEG("mpeg", "MPEG视频", "video/mpeg"),

    MPKG("mpkg", "苹果安装程序包", "application/vnd.apple.installer+xml"),

    ODP("odp", "OpenDocument演示文稿文档", "application/vnd.oasis.opendocument.presentation"),

    ODS("ods", "OpenDocument电子表格文档", "application/vnd.oasis.opendocument.spreadsheet"),

    ODT("odt", "OpenDocument文字文件", "application/vnd.oasis.opendocument.text"),

    OGA("oga", "OGG音讯", "audio/ogg"),

    OGV("ogv", "OGG视频", "video/ogg"),

    OGX("ogx", "OGG", "application/ogg"),

    OPUS("opus", "OPUS音频", "audio/opus"),

    OTF("otf", "otf字体", "font/otf"),

    PNG("png", "便携式网络图形", "image/png"),

    PDF("pdf", "Adobe 可移植文档格式(PDF)", "application/pdf"),

    PHP("php", "php", "application/x-httpd-php"),

    PPT("ppt", "Microsoft PowerPoint", "application/vnd.ms-powerpoint"),

    PPTX("pptx", "Microsoft PowerPoint(OpenXML)", "application/vnd.openxmlformats-officedocument.presentationml.presentation"),

    RAR("rar", "RAR档案", "application/vnd.rar"),

    RTF("rtf", "富文本格式", "application/rtf"),

    SH("sh", "Bourne Shell脚本", "application/x-sh"),

    SVG("svg", "可缩放矢量图形(SVG)", "image/svg+xml"),

    SWF("swf", "小型Web格式(SWF)或Adobe Flash文档", "application/x-shockwave-flash"),

    TAR("tar", "磁带存档(TAR)", "application/x-tar"),

    TIF("tif", "标记图像文件格式(TIFF)", "image/tiff"),

    TIFF("tiff", "标记图像文件格式(TIFF)", "image/tiff"),

    TS("ts", "MPEG传输流", "video/mp2t"),

    TTF("ttf", "ttf字体", "font/ttf"),

    TXT("txt", "文本(通常为ASCII或ISO 8859- n", "text/plain"),

    VSD("vsd", "微软Visio", "application/vnd.visio"),

    WAV("wav", "波形音频格式", "audio/wav"),

    WEBA("weba", "WEBM音频", "audio/webm"),

    WEBM("webm", "WEBM视频", "video/webm"),

    WEBP("webp", "WEBP图像", "image/webp"),

    WOFF("woff", "Web开放字体格式(WOFF)", "font/woff"),

    WOFF2("woff2", "Web开放字体格式(WOFF)", "font/woff2"),

    XHTML("xhtml", "XHTML", "application/xhtml+xml"),

    XLS("xls", "微软Excel", "application/vnd.ms-excel"),

    XLSX("xlsx", "微软Excel(OpenXML)", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"),

    XML("xml", "XML", "application/xml"),

    XUL("xul", "XUL", "application/vnd.mozilla.xul+xml"),

    ZIP("zip", "ZIP", "application/zip"),

    MIME_3GP("3gp", "3GPP audio/video container", "video/3gpp"),

    MIME_3GP_WITHOUT_VIDEO("3gp", "3GPP audio/video container doesn't contain video", "audio/3gpp2"),

    MIME_3G2("3g2", "3GPP2 audio/video container", "video/3gpp2"),

    MIME_3G2_WITHOUT_VIDEO("3g2", "3GPP2 audio/video container  doesn't contain video", "audio/3gpp2"),

    MIME_7Z("7z", "7-zip存档", "application/x-7z-compressed");

   //扩展名
    private final String extension;
    //说明
    private final String explain;
    //contentType/mime类型
    private final String mimeType;

    /**
     * @param extension 上传的文件扩展名
     * @param explain   类型说明
     * @param mimeType  Mime对应的类型
     */
    MimeTypeEnum(String extension, String explain, String mimeType) {
        this.extension = extension;
        this.explain = explain;
        this.mimeType = mimeType;
    }

    /**
     * 通过扩展名获取枚举类型
     *
     * @param extension 扩展名
     * @return 枚举类
     */
    public static MimeTypeEnum getByExtension(String extension) {
        if (StringUtils.isEmpty(extension)) {
            return null;
        }
        for (MimeTypeEnum typesEnum : MimeTypeEnum.values()) {
            if (extension.equalsIgnoreCase(typesEnum.getExtension())) {
                return typesEnum;
            }
        }
        return null;
    }

    /**
     * Content-Type常用对照
     * 根据后缀获取Mime
     *
     * @param fileType 扩展名
     * @return mime类型
     */
    public static String getContentType(String fileType) {
        MimeTypeEnum mimeTypeEnum = MimeTypeEnum.getByExtension(fileType);
        if (mimeTypeEnum != null) {
            return mimeTypeEnum.getMimeType();
        }
        return "application/octet-stream";
    }

}

Java Main测试方法

    public static void main(String[] args) throws Exception {       
        log.info(MimeTypeEnum.getContentType("zip"));
        MimeTypeEnum mimeTypeEnum = MimeTypeEnum.getByExtension("zip");
        log.info(mimeTypeEnum.getExplain()+ "  "+mimeTypeEnum.getMimeType()+ "   "+mimeTypeEnum.getExtension());
    }

Java Main 方法结果输出

2020-11-02 11:13:59 INFO [Class:c.l.c.u.o.OSSUtil->Thread:main] application/zip 
2020-11-02 11:13:59 INFO [Class:c.l.c.u.o.OSSUtil->Thread:main] ZIP  application/zip   zip 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 依据文件名后缀,获取Content-Type/Mime类型 的相关文章

  • 按键时关闭 ModalWindow

    我希望能够在用户按下某个键 在我的例子中是 ESC 时关闭 ModalWindow 我有一个用于按键的 Javascript 侦听器 它调用取消按钮 ID 的单击事件 jQuery modalWindowInfo closeButtonId
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供

随机推荐

  • C语言循环结构

    目录 循环结构 while循环 基本while循环 do while循环 for循环 跳转语句 break continue goto 单纯的循环的常规操作 循环嵌套 循环嵌套的问题 作业 经典问题 百鸡百钱 经典问题 斐波拉契数列 循环结
  • 数据结构之顺序表(创建、使用、销毁)

    顺序表是在计算机内存中采用顺序存储的方式存储的线性表 是指用一组地址连续的存储单元依次存储数据元素的线性结构 顺序表的物理结构和逻辑结构都是连续的 顺序表的增删操作麻烦 需要移动的元素可能很多 修改和查找操作方便 通过下标访问 访问速度快
  • elementUI 表格组件设置高度之后去除滚动条

  • 用C++实现十大经典排序算法

    作者 billy 版权声明 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 简介 排序算法可以分为内部排序和外部排序 内部排序是数据记录在内存中进行排序 而外部排序是因排序的数据很大 一次不能容纳全部的排序记录 在排序过
  • 使用单进程,单线程,非堵塞---完成多任务!

    使用单进程 单线程 非堵塞 完成多任务 代码如下 import socket import time tcp server socket socket socket AF INET socket SOCK STREAM tcp server
  • [编程题]查找兄弟单词

    Talk is cheap show me the code 一 问题描述 实现一个可存储若干个单词的字典 用户可以 在字典中加入单词 查找指定单词在字典中的兄弟单词个数 查找指定单词的指定序号的兄弟单词 指定序号指字典中兄弟单词按字典顺序
  • java反编译jar包

    java反编译jar包 在日常开发中 由于之前的系统中UDF函数源码并没有接手 要想把现有UDF函数一直到其他平台上使用 因此需要对现有jar包进行反编译 并在其他平台上调试使用 反编译方式分两种 GUI工具 JD GUI idea插件 j
  • 清华工科博士答辩PPT(转载)

    答辩前吸一下欧气 转自B站视频 参考链接 大佬
  • html javascript 设置cookie永不过期

    function cookieToJson str let cookieArr str split let obj cookieArr forEach i gt let arr i split obj arr 0 arr 1 return
  • Mybatis动态sql条件查询、判断空值和空字符串

    转自 Mybatis动态sql条件查询 判断空值和空字符串 下文笔者讲述mybatis动态sql条件查询的使用简介说明 如下所示 例 Select
  • 极氪汽车的云资源治理细探

    前言 2021 年 极氪 001 迅速崭露头角 仅用 110 天便创下了首款车型交付量 最快破万 的纪录 2022 年 11 月 极氪 009 在短短 76 天内便率先完成了首批交付 刷新了中国豪华纯电品牌交付速度的纪录 2023 年 6
  • SpringMvc 实现上传zip文件解压

    去掉了一些敏感数据 仅供参考 import java io File import java io FileInputStream import java io IOException import java io InputStream
  • 多益前端笔试题

    1 svg画四边形 四个点的坐标分别是 220 100 300 210 170 250 123 234
  • 《Linux运维实战:Centos7.6一键离线部署mysql8.0.24》

    系列文章目录 提示 这里可以添加系列文章的所有文章的目录 目录需要自己手动添加 例如 第一章 Python 机器学习入门之pandas的使用 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 系列文章目录 前言 一
  • c++开篇——自引用指针this

    c 中 有一个特别的指针this 也叫自引用指针 这个指针的巧妙之处在于它永远指向的是当前对象 由此便可以访问当前对象的所有成员 这样一来许多问题就得到了巧妙的解决 注意 this 是一个指针 要用 gt 来访问成员变量或成员函数 当调用到
  • Java实现多线程有几种方式(满分回答)

    目录 JDK8 创建的线程的两种方式 orcle文档解释 方式一 继承Thread类 方式二 实现Runnable接口 同时用两种的情况 其他间接创建方式 Callable接口 线程池 JDK8 创建的线程的两种方式 orcle文档解释 o
  • allegro界面简单介绍一

    1 view界面 2 Visibility Views 显示图层选择 Planes 平面层 Plan 规划布线 Etch 铜皮 走线 Via 过孔 Pin 焊盘pin脚 Drc 错误标记 All 全部显示 3 如何打开层设置 4 设置不同的
  • BootLoader简介——linux内核的引导

    1 BootLoader 在CPU上电启动时 一般连内存控制器都没有初始化过 根本无法在主存中运行程序 更不可能处在Linux内核启动环境中 为了初始化CPU及其他外设 使得Linux内核可以在系统主存中运行 并让系统符合Lintix内核启
  • Python:利用cv2模块识别手势

    简介 OpenCV是一个基于BSD许可 开源 发行的跨平台计算机视觉库 可以运行在Linux Windows Android和Mac OS操作系统上 它轻量级而且高效 由一系列 C 函数和少量 C 类构成 同时提供了Python Ruby
  • Java 依据文件名后缀,获取Content-Type/Mime类型

    枚举类代码MimeTypeEnum import org apache commons lang3 StringUtils import lombok Getter 依据文件后缀名返回ContentType author zzg Gette