掘金 后端 ( ) • 2024-06-25 09:54

基于TIKA(重量级,准确率很高)

介绍

apache-tika是一个文档解析库,用于解析各种文件中的内容和元数据,当然也可以用来判断文件类型

支持的文件类型(1500种左右)

可以在这个网站上查阅,tika支持的所有文件类型https://www.digipres.org/formats/sources/tika/formats

image.png

  • ID 表示文件类型
  • Filename pattern 表示该文件类型的文件后缀
  • Has Magic? 表示该类型是否具有文件头标识(如果没有则使用文件后缀匹配)
  • MIME Types 表示等价的文件类型有哪些(有些文件类型是等价的,同义不同名)
  • Super-Type 表示基于哪个文件类型拓展而来

优缺点

优点

大部分文件都可以准确的判断出文件类型,准确率非常高,同时也可以解析文件元数据和文件内容

缺点

需要集成各种文件的tika拓展解析包,依赖包很多,打包出来会比较大

依赖

<!-- tika核心功能包 -->
<dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-core</artifactId>
    <version>2.9.2</version>
</dependency>
<!-- tika文件解析器整合包 -->
<dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-parsers-standard-package</artifactId>
    <version>2.9.2</version>
</dependency>

代码示例

// 建议定义为静态常量,可复用
Tika tika = new Tika();
// 传入file对象,得到文件类型,判断失败则返回application/octet-stream
String contentType = tika.detect(new File(""));
// 传入输入流,得到文件类型,判断失败则返回application/octet-stream
String contentType = tika.detect(new ByteArrayInputStream(""));
// 传入字节数组,得到文件类型,判断失败则返回application/octet-stream
String contentType = tika.detect(new byte[1024]);
// 传入文件名,得到文件类型,判断失败则返回application/octet-stream
String contentType = tika.detect("");
// 传入Path对象,得到文件类型,判断失败则返回application/octet-stream
String contentType = tika.detect(Path.of(""));
// 传入URL,得到文件类型,判断失败则返回application/octet-stream
String contentType = tika.detect(new URL(""));

基于 jakarta.activation(javax.activation)

介绍

jakarta.activationJakarta中的一个文件类型解析库

支持的文件类型(可以自定义文件类型匹配列表)

以下是我自己整理的文件类型列表

#二进制
application/andrew-inset                ez
application/applixware                  aw
application/atom+xml                    atom
application/atomcat+xml                 atomcat
application/atomsvc+xml                 atomsvc
application/bizagi-modeler              bpm
application/cbor                        cbor
application/ccxml+xml                   ccxml
application/cu-seeme                    cu
application/davmount+xml                davmount
application/dif+xml                     dif
application/dita+xml;format=map         ditamap
application/dita+xml;format=topic       dita
application/dita+xml;format=val         ditaval
application/ecmascript                  ecma
application/emma+xml                    emma
application/epub+zip                    epub
application/fits                        fit  fits  fts
application/font-tdpfr                  pfr
application/gzip                        emz  tgz  gz
application/hyperstudio                 stk
application/illustrator                 ai
application/java-archive                jar
application/java-serialized-object      ser
application/java-vm                     class
application/json                        json
application/lost+xml                    lostxml
application/mac-binhex40                hqx
application/mac-compactpro              cpt
application/marc                        mrc
application/mathematica                 nb  ma  mb
application/mathml+xml                  mathml
application/mbox                        mbox
application/mediaservercontrol+xml      mscml
application/mp4                         mp4s
application/x-mpegurl                   m3u8
application/msword                      doc  dot
application/mxf                         mxf
application/oda                         oda
application/oebps-package+xml           opf
application/ogg                         ogx
application/onenote                     onetoc  onetoc2  onetmp  onepkg
application/patch-ops-error+xml         xer
application/pdf                         pdf
application/pgp-encrypted               pgp
application/pgp-signature               sig  asc
application/pics-rules                  prf
application/pkcs10                      p10
application/pkcs7-mime                  p7c  p7m
application/pkcs7-signature             p7s
application/pkix-cert                   cer
application/pkix-crl                    crl
application/pkix-pkipath                pkipath
application/pkixcmp                     pki
application/pls+xml                     pls
application/postscript                  epsf  ps  eps  epsi
application/prs.cww                     cww
application/rdf+xml                     rdf  xmp  owl
application/reginfo+xml                 rif
application/relax-ng-compact-syntax     rnc
application/resource-lists+xml          rl
application/resource-lists-diff+xml     rld
application/rls-services+xml            rs
application/rsd+xml                     rsd
application/rss+xml                     rss
application/rtf                         rtf
application/sbml+xml                    sbml
application/scvp-cv-request             scq
application/scvp-cv-response            scs
application/scvp-vp-request             spq
application/scvp-vp-response            spp
application/sdp                         sdp
application/sereal                      srl
application/set-payment-initiation                              setpay
application/set-registration-initiation                         setreg
application/shf+xml                     shf
application/sldworks                    sldprt  slddrw  sldasm
application/smil+xml                    smi  smil  sml
application/sparql-query                rq
application/sparql-results+xml          srx
application/srgs                        gram
application/srgs+xml                    grxml
application/ssml+xml                    ssml
application/toml                        toml
application/vnd.3gpp.pic-bw-large       plb
application/vnd.3gpp.pic-bw-small       psb
application/vnd.3gpp.pic-bw-var         pvb
application/vnd.3gpp2.tcap              tcap
application/vnd.3m.post-it-notes        pwn
application/vnd.accpac.simply.aso       aso
application/vnd.accpac.simply.imp       imp
application/vnd.acucobol                acu
application/vnd.acucorp                 atc  acutc
application/vnd.adobe.aftereffects.project                      aep
application/vnd.adobe.aftereffects.template                     aet
application/vnd.adobe.air-application-installer-package+zip     air
application/vnd.adobe.xdp+xml           xdp
application/vnd.adobe.xfdf              xfdf
application/vnd.airzip.filesecure.azf   azf
application/vnd.airzip.filesecure.azs   azs
application/vnd.amazon.ebook            azw
application/vnd.americandynamics.acc    acc
application/vnd.amiga.ami               ami
application/vnd.android.package-archive                         apk
application/vnd.anser-web-certificate-issue-initiation          cii
application/vnd.anser-web-funds-transfer-initiation             fti
application/vnd.antix.game-component    atx
application/vnd.apple.installer+xml     mpkg
application/vnd.apple.keynote           key
application/vnd.apple.numbers           numbers
application/vnd.apple.pages             pages
application/vnd.arastra.swi             swi
application/vnd.blueice.multipass       mpm
application/vnd.bmi                     bmi
application/vnd.businessobjects         rep
application/vnd.chemdraw+xml            cdxml
application/vnd.chipnuts.karaoke-mmd    mmd
application/vnd.cinderella              cdy
application/vnd.claymore                cla
application/vnd.clonk.c4group           c4d  c4p  c4u  c4g  c4f
application/vnd.commonspace             csp
application/vnd.contact.cmsg            cdbcmsg
application/vnd.cosmocaller             cmc
application/vnd.crick.clicker           clkx
application/vnd.crick.clicker.keyboard                          clkk
application/vnd.crick.clicker.palette                           clkp
application/vnd.crick.clicker.template                          clkt
application/vnd.crick.clicker.wordbank                          clkw
application/vnd.criticaltools.wbs+xml                           wbs
application/vnd.ctc-posml               pml
application/vnd.cups-ppd                ppd
application/vnd.curl.car                car
application/vnd.curl.pcurl              pcurl
application/vnd.data-vision.rdz         rdz
application/vnd.denovo.fcselayout-link                          fe_launch
application/vnd.dna                     dna
application/vnd.dolby.mlp               mlp
application/vnd.dpgraph                 dpg
application/vnd.dreamfactory            dfac
application/vnd.dynageo                 geo
application/vnd.ecowin.chart            mag
application/vnd.enliven                 nml
application/vnd.epson.esf               esf
application/vnd.epson.msf               msf
application/vnd.epson.quickanime        qam
application/vnd.epson.salt              slt
application/vnd.epson.ssf               ssf
application/vnd.eszigno3+xml            es3  et3
application/vnd.etsi.asic-e+zip         asice
application/vnd.etsi.asic-s+zip         asics
application/vnd.ezpix-album             ez2
application/vnd.ezpix-package           ez3
application/vnd.fdf                     fdf
application/vnd.fdsn.mseed              mseed
application/vnd.fdsn.seed               dataless  seed
application/vnd.flographit              gph
application/vnd.fluxtime.clip           ftc
application/vnd.framemaker              book  frame  fm  maker
application/vnd.frogans.fnc             fnc
application/vnd.frogans.ltf             ltf
application/vnd.fsc.weblaunch           fsc
application/vnd.fujitsu.oasys           oas
application/vnd.fujitsu.oasys2          oa2
application/vnd.fujitsu.oasys3          oa3
application/vnd.fujitsu.oasysgp         fg5
application/vnd.fujitsu.oasysprs        bh2
application/vnd.fujixerox.ddd           ddd
application/vnd.fujixerox.docuworks     xdw
application/vnd.fujixerox.docuworks.binder                      xbd
application/vnd.fuzzysheet              fzs
application/vnd.genomatix.tuxedo        txd
application/vnd.geogebra.file           ggb
application/vnd.geogebra.tool           ggt
application/vnd.geometry-explorer       gre  gex
application/vnd.gmx                     gmx
application/vnd.google-earth.kml+xml    kml
application/vnd.google-earth.kmz        kmz
application/vnd.grafeq                  gqs  gqf
application/vnd.groove-account          gac
application/vnd.groove-help             ghf
application/vnd.groove-identity-message                         gim
application/vnd.groove-injector         grv
application/vnd.groove-tool-message     gtm
application/vnd.groove-tool-template    tpl
application/vnd.groove-vcard            vcg
application/vnd.handheld-entertainment+xml                      zmm
application/vnd.hbci                    hbci
application/vnd.hhe.lesson-player       les
application/vnd.hp-hpgl                 hpgl
application/vnd.hp-hpid                 hpid
application/vnd.hp-hps                  hps
application/vnd.hp-jlyt                 jlt
application/vnd.hp-pcl                  pcl
application/vnd.hp-pclxl                pclxl
application/vnd.hydrostatix.sof-data    sfd-hdstx
application/vnd.hzn-3d-crossword        x3d
application/vnd.ibm.minipay             mpy
application/vnd.ibm.modcap              listafp  afp  list3820
application/vnd.ibm.rights-management   irm
application/vnd.ibm.secure-container    sc
application/vnd.iccprofile              icm  icc
application/vnd.igloader                igl
application/vnd.immervision-ivp         ivp
application/vnd.immervision-ivu         ivu
application/vnd.intercon.formnet        xpw  xpx
application/vnd.intu.qbo                qbo
application/vnd.intu.qfx                qfx
application/vnd.ipunplugged.rcprofile   rcprofile
application/vnd.irepository.package+xml                         irp
application/vnd.is-xpr                  xpr
application/vnd.jam                     jam
application/vnd.jcp.javame.midlet-rms                           rms
application/vnd.jisp                    jisp
application/vnd.joost.joda-archive      joda
application/vnd.kahootz                 ktr  ktz
application/vnd.kde.karbon              karbon
application/vnd.kde.kchart              chrt
application/vnd.kde.kformula            kfo
application/vnd.kde.kivio               flw
application/vnd.kde.kontour             kon
application/vnd.kde.kpresenter          kpt  kpr
application/vnd.kde.kspread             ksp
application/vnd.kde.kword               kwd  kwt
application/vnd.kenameaapp              htke
application/vnd.kidspiration            kia
application/vnd.kinar                   knp  kne
application/vnd.koan                    skd  skm  skt  skp
application/vnd.kodak-descriptor        sse
application/vnd.llamagraphics.life-balance.desktop              lbd
application/vnd.llamagraphics.life-balance.exchange+xml         lbe
application/vnd.lotus-1-2-3             123
application/vnd.lotus-approach          apr
application/vnd.lotus-freelance         pre
application/vnd.lotus-notes             nsf
application/vnd.lotus-organizer         org
application/vnd.lotus-wordpro           lwp
application/vnd.macports.portpkg        portpkg
application/vnd.mcd                     mcd
application/vnd.medcalcdata             mc1
application/vnd.mediastation.cdkey      cdkey
application/vnd.mfer                    mwf
application/vnd.mfmp                    mfm
application/vnd.micrografx.flo          flo
application/vnd.micrografx.igx          igx
application/vnd.mif                     mif
application/vnd.mindjet.mindmanager     mmat  mmap  mmmp  mmp  mmas  mmpt
application/vnd.mobius.daf              daf
application/vnd.mobius.dis              dis
application/vnd.mobius.mbk              mbk
application/vnd.mobius.mqy              mqy
application/vnd.mobius.msl              msl
application/vnd.mobius.plc              plc
application/vnd.mobius.txf              txf
application/vnd.mophun.application      mpn
application/vnd.mophun.certificate      mpc
application/vnd.mozilla.xul+xml         xul
application/vnd.ms-artgalry             cil
application/vnd.ms-cab-compressed       cab
application/vnd.ms-excel                xlc  xlt  xla  xll  xlm  xlw  xld  xls
application/vnd.ms-excel.addin.macroenabled.12                  xlam
application/vnd.ms-excel.sheet.binary.macroenabled.12           xlsb
application/vnd.ms-excel.sheet.macroenabled.12                  xlsm
application/vnd.ms-excel.template.macroenabled.12               xltm
application/vnd.ms-fontobject           eot
application/vnd.ms-htmlhelp             chm
application/vnd.ms-ims                  ims
application/vnd.ms-lrm                  lrm
application/vnd.ms-outlook              msg
application/vnd.ms-outlook-pst          ost  pst
application/vnd.ms-pki.seccat           cat
application/vnd.ms-pki.stl              stl
application/vnd.ms-powerpoint           pps  pot  ppa  ppz  ppt
application/vnd.ms-powerpoint.addin.macroenabled.12             ppam
application/vnd.ms-powerpoint.presentation.macroenabled.12      pptm
application/vnd.ms-powerpoint.slide.macroenabled.12             sldm
application/vnd.ms-powerpoint.slideshow.macroenabled.12         ppsm
application/vnd.ms-powerpoint.template.macroenabled.12          potm
application/vnd.ms-project              mpp  mpt
application/vnd.ms-visio                vss  vst  vsd  vsw
application/vnd.ms-visio.drawing        vsdx
application/vnd.ms-visio.drawing.macroEnabled.12                vsdm
application/vnd.ms-visio.stencil        vssx
application/vnd.ms-visio.stencil.macroEnabled.12                vssm
application/vnd.ms-visio.template       vstx
application/vnd.ms-visio.template.macroEnabled.12               vstm
application/vnd.ms-word.document.macroenabled.12                docm
application/vnd.ms-word.template.macroenabled.12                dotm
application/vnd.ms-works                wcm  wks  wps  wdb
application/vnd.ms-wpl                  wpl
application/vnd.ms-xpsdocument          oxps  xps
application/vnd.mseq                    mseq
application/vnd.musician                mus
application/vnd.muvee.style             msty
application/vnd.neurolanguage.nlu       nlu
application/vnd.noblenet-directory      nnd
application/vnd.noblenet-sealer         nns
application/vnd.noblenet-web            nnw
application/vnd.nokia.n-gage.data       ngdat
application/vnd.nokia.n-gage.symbian.install                    n-gage
application/vnd.nokia.radio-preset      rpst
application/vnd.nokia.radio-presets     rpss
application/vnd.novadigm.edm            edm
application/vnd.novadigm.edx            edx
application/vnd.novadigm.ext            ext
application/vnd.oasis.opendocument.chart                        odc
application/vnd.oasis.opendocument.chart-template               otc
application/vnd.oasis.opendocument.database                     odb
application/vnd.oasis.opendocument.formula                      odf
application/vnd.oasis.opendocument.formula-template             odft
application/vnd.oasis.opendocument.graphics                     odg
application/vnd.oasis.opendocument.graphics-template            otg
application/vnd.oasis.opendocument.image                        odi
application/vnd.oasis.opendocument.image-template               oti
application/vnd.oasis.opendocument.presentation                 odp
application/vnd.oasis.opendocument.presentation-template        otp
application/vnd.oasis.opendocument.spreadsheet                  ods
application/vnd.oasis.opendocument.spreadsheet-template         ots
application/vnd.oasis.opendocument.text                         odt
application/vnd.oasis.opendocument.text-master                  otm
application/vnd.oasis.opendocument.text-template                ott
application/vnd.oasis.opendocument.text-web                     oth
application/vnd.olpc-sugar              xo
application/vnd.oma.dd2+xml             dd2
application/vnd.openofficeorg.extension                         oxt
application/vnd.openxmlformats-officedocument.presentationml.presentation           thmx  pptx
application/vnd.openxmlformats-officedocument.presentationml.slide                  sldx
application/vnd.openxmlformats-officedocument.presentationml.slideshow              ppsx
application/vnd.openxmlformats-officedocument.presentationml.template               potx
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet                   xlsx
application/vnd.openxmlformats-officedocument.spreadsheetml.template                xltx
application/vnd.openxmlformats-officedocument.wordprocessingml.document             docx
application/vnd.openxmlformats-officedocument.wordprocessingml.template             dotx
application/vnd.osgi.dp                 dp
application/vnd.palm                    pqa  oprc
application/vnd.pg.format               str
application/vnd.pg.osasli               ei6
application/vnd.picsel                  efif
application/vnd.pocketlearn             plf
application/vnd.powerbuilder6           pbd
application/vnd.previewsystems.box      box
application/vnd.proteus.magazine        mgz
application/vnd.publishare-delta-tree                           qps
application/vnd.pvi.ptid1               ptid
application/vnd.quark.quarkxpress       qxt  qxb  qxd  qxl  qwd  qwt
application/vnd.recordare.musicxml      mxl
application/vnd.recordare.musicxml+xml                          musicxml
application/vnd.rim.cod                 cod
application/vnd.rn-realmedia            rm
application/vnd.route66.link66+xml      link66
application/vnd.seemail                 see
application/vnd.sema                    sema
application/vnd.semd                    semd
application/vnd.semf                    semf
application/vnd.shana.informed.formdata                         ifm
application/vnd.shana.informed.formtemplate                     itp
application/vnd.shana.informed.interchange                      iif
application/vnd.shana.informed.package                          ipk
application/vnd.simtech-mindmapper                              twd  twds
application/vnd.smaf                    mmf
application/vnd.smart.teacher           teacher
application/vnd.solent.sdkm+xml         sdkd  sdkm
application/vnd.spotfire.dxp            dxp
application/vnd.spotfire.sfs            sfs
application/vnd.stardivision.calc       sdc
application/vnd.stardivision.draw       sda
application/vnd.stardivision.impress    sdd
application/vnd.stardivision.math       smf
application/vnd.stardivision.writer     sdw
application/vnd.stardivision.writer-global                      sgl
application/vnd.sun.xml.calc            sxc
application/vnd.sun.xml.calc.template   stc
application/vnd.sun.xml.draw            sxd
application/vnd.sun.xml.draw.template   std
application/vnd.sun.xml.impress         sxi
application/vnd.sun.xml.impress.template                        sti
application/vnd.sun.xml.math            sxm
application/vnd.sun.xml.writer          sxw
application/vnd.sun.xml.writer.global                           sxg
application/vnd.sun.xml.writer.template                         stw
application/vnd.sus-calendar            sus  susp
application/vnd.svd                     svd
application/vnd.symbian.install         sisx  sis
application/vnd.syncml+xml              xsm
application/vnd.syncml.dm+wbxml         bdm
application/vnd.syncml.dm+xml           xdm
application/vnd.tao.intent-module-archive                       tao
application/vnd.tcpdump.pcap            dmp  pcap  cap
application/vnd.tmobile-livetv          tmo
application/vnd.trid.tpt                tpt
application/vnd.triscape.mxs            mxs
application/vnd.trueapp                 tra
application/vnd.ufdl                    ufd  ufdl
application/vnd.uiq.theme               utz
application/vnd.umajin                  umj
application/vnd.unity                   unityweb
application/vnd.uoml+xml                uoml
application/vnd.vcx                     vcx
application/vnd.visionary               vis
application/vnd.vsf                     vsf
application/vnd.wap.wbxml               wbxml
application/vnd.wap.wmlc                wmlc
application/vnd.wap.wmlscriptc          wmlsc
application/vnd.webturbo                wtb
application/vnd.wordperfect             wpd
application/vnd.wqd                     wqd
application/vnd.wt.stf                  stf
application/vnd.xara                    xar
application/vnd.xfdl                    xfdl
application/vnd.yamaha.hv-dic           hvd
application/vnd.yamaha.hv-script        hvs
application/vnd.yamaha.hv-voice         hvp
application/vnd.yamaha.openscoreformat                          osf
application/vnd.yamaha.openscoreformat.osfpvg+xml               osfpvg
application/vnd.yamaha.smaf-audio       saf
application/vnd.yamaha.smaf-phrase      spf
application/vnd.yellowriver-custom-menu                         cmp
application/vnd.zul                     zir  zirz
application/vnd.zzazz.deck+xml          zaz
application/voicexml+xml                vxml
application/winhlp                      hlp
application/wsdl+xml                    wsdl
application/wspolicy+xml                wspolicy
application/x-7z-compressed             7z
application/x-abiword                   abw
application/x-ace-compressed            ace
application/x-adobe-indesign            indd
application/x-adobe-indesign-interchange                        inx
application/x-apple-diskimage           dmg
application/x-appleworks                cwk
application/x-archive                   ar  a
application/x-arj                       arj
application/x-authorware-bin            aab  x32  u32  vox
application/x-authorware-map            aam
application/x-authorware-seg            aas
application/x-axcrypt                   axx
application/x-bcpio                     bcpio
application/x-bibtex-text-file          bib  bibtex
application/x-bittorrent                torrent
application/x-bzip                      tbz  bz
application/x-bzip2                     boz  tbz2  bz2
application/x-cdlink                    vcd
application/x-chat                      chat
application/x-chess-pgn                 pgn
application/x-chrome-package            crx
application/x-compress                  z
application/x-corelpresentations        shw
application/x-cpio                      cpio
application/x-csh                       csh  tcsh
application/x-debian-package            udeb  deb
application/x-dex                       dex
application/x-director                  cxt  cst  swa  w3d  dxr  cct  dir  fgd  dcr
application/x-doom                      wad
application/x-dosexec                   exe
application/x-dtbncx+xml                ncx
application/x-dtbook+xml                dtb
application/x-dtbresource+xml           res
application/x-dvi                       dvi
application/x-elc                       elc
application/x-emf                       emf
application/x-fictionbook+xml           fb2
application/x-filemaker                 fp7
application/x-font-adobe-metric         afm  amfm  acfm
application/x-font-bdf                  bdf
application/x-font-ghostscript          gsf
application/x-font-linux-psf            psf
application/x-font-otf                  otf
application/x-font-pcf                  pcf
application/x-font-printer-metric       pfm
application/x-font-snf                  snf
application/x-font-ttf                  ttf  ttc
application/x-font-type1                pfb  pfa
application/x-futuresplash              spl
application/x-gnucash                   gnucash
application/x-gnumeric                  gnumeric
application/x-grib                      grb  grb1  grb2
application/x-gtar                      gtar
application/x-hdf                       he5  h5  hdf
application/x-ibooks+zip                ibooks
application/x-iso9660-image             iso
application/x-itunes-ipa                ipa
application/x-java-jnilib               jnilib
application/x-java-jnlp-file            jnlp
application/x-java-pack200              pack
application/x-killustrator              kil
application/x-latex                     latex
application/x-matlab-data               mat
application/x-mobipocket-ebook          mobi  prc
application/x-ms-application            application
application/x-ms-installer              mst  msp  msi
application/x-ms-wmd                    wmd
application/x-ms-wmz                    wmz
application/x-ms-xbap                   xbap
application/x-msaccess                  mdb
application/x-msbinder                  obd
application/x-mscardfile                crd
application/x-msclip                    clp
application/x-msdownload                com  dll  bat  cmd
application/x-msmediaview               mvb  m14  m13
application/x-msmoney                   mny
application/x-mspublisher               pub
application/x-msschedule                scd
application/x-msterminal                trm
application/x-mswrite                   wri
application/x-mysql-misam-compressed-index                  myi
application/x-mysql-misam-data          myd
application/x-netcdf                    cdf  nc
application/x-pkcs12                    p12  pfx
application/x-pkcs7-certificates        p7b  spc
application/x-pkcs7-certreqresp         p7r
application/x-project                   mpx
application/x-prt                       prt
application/x-quattro-pro               qpw  wb1  wb2  wb3
application/x-rar-compressed            rar
application/x-roxio-toast               toast
application/x-rpm                       rpm
application/x-sas                       sas
application/x-sas-access                sas7bacs  sa7
application/x-sas-audit                 st7  sas7baud
application/x-sas-backup                sas7bbak
application/x-sas-catalog               sc7  sas7bcat
application/x-sas-data                  sd7  sas7bdat
application/x-sas-data-index            sas7bndx  si7
application/x-sas-dmdb                  s7m  sas7bdmd
application/x-sas-fdb                   sas7bfdb  sf7
application/x-sas-itemstor              sas7bitm  sr7
application/x-sas-mddb                  sas7bmdb  sm7
application/x-sas-program-data          ss7  sas7bpgm
application/x-sas-putility              sp7  sas7bput
application/x-sas-transport             stx
application/x-sas-utility               su7  sas7butl
application/x-sas-view                  sv7  sas7bvew
application/x-sh                        bash  sh
application/x-shar                      shar
application/x-shockwave-flash           swf
application/x-silverlight-app           xap
application/x-snappy-framed             sz
application/x-staroffice-template       vor
application/x-stuffit                   sit
application/x-stuffitx                  sitx
application/x-sv4cpio                   sv4cpio
application/x-sv4crc                    sv4crc
application/x-tar                       tar
application/x-tex                       tex
application/x-tex-tfm                   tfm
application/x-texinfo                   texinfo  texi
application/x-tika-java-enterprise-archive              ear
application/x-tika-java-web-archive                     war
application/x-tika-msworks-spreadsheet                  xlr
application/x-uc2-compressed            uc2
application/x-ustar                     ustar
application/x-vmdk                      vmdk
application/x-wais-source               src
application/x-webarchive                webarchive
application/x-x509-ca-cert              crt  der
application/x-xfig                      fig
application/x-xmind                     xmind
application/x-xpinstall                 xpi
application/x-xz                        xz
application/x-zoo                       zoo
application/xenc+xml                    xenc
application/xhtml+xml                   xhtml  xht
application/xml                         xsl  xsd
application/xml-dtd                     dtd
application/xop+xml                     xop
application/xquery                      xquery  xq
application/xslfo+xml                   fo  xslfo
application/xslt+xml                    xslt
application/xspf+xml                    xspf
application/xv+xml                      xhvml  xvml  xvm  mxml
application/zip                         zip


#音频
audio/aacp                              aacp
audio/adpcm                             adp
audio/amr                               amr
audio/basic                             snd  au
audio/midi                              rmi  kar  midi  mid
audio/mpeg                              mp2  mp2a  mp3  m3a  m2a  mpga
audio/ogg                               oga  ogg
audio/opus                              opus
audio/speex                             spx
audio/vnd.adobe.soundbooth              asnd
audio/vnd.digital-winds                 eol
audio/vnd.dts                           dts
audio/vnd.dts.hd                        dtshd
audio/vnd.lucent.voice                  lvp
audio/vnd.ms-playready.media.pya        pya
audio/vnd.nuera.ecelp4800               ecelp4800
audio/vnd.nuera.ecelp7470               ecelp7470
audio/vnd.nuera.ecelp9600               ecelp9600
audio/wav                               wav
audio/webm                              weba
audio/x-aac                             aac
audio/x-aiff                            aifc  aiff  aif
audio/x-flac                            flac
audio/x-m4a                             mp4a  m4a  m4b
audio/x-matroska                        mka
audio/x-mod                             mod
audio/x-mpegurl                         m3u
audio/x-ms-wax                          wax
audio/x-ms-wma                          wma
audio/x-pn-realaudio                    ram  ra
audio/x-pn-realaudio-plugin             rmp


#化学
chemical/x-cdx                          cdx
chemical/x-cif                          cif
chemical/x-cmdf                         cmdf
chemical/x-cml                          cml
chemical/x-csml                         csml
chemical/x-pdb                          pdb
chemical/x-xyz                          xyz

#字体
font/woff                               woff
font/woff2                              woff2


#图像
image/avif                              avif
image/bmp                               dib  bmp
image/cgm                               cgm
image/g3fax                             g3
image/gif                               gif
image/heic                              heif heic
image/ief                               ief
image/jp2                               jp2
image/jpeg                              jpe  jfi  jpg  jif  jpeg  jfif
image/jpm                               jpm  jpgm
image/jpx                               jpf
image/nitf                              ntf  nitf
image/png                               png
image/prs.btif                          btif
image/svg+xml                           svgz  svg
image/tiff                              tiff  tif
image/vnd.adobe.photoshop               psd
image/vnd.adobe.premiere                ppj
image/vnd.djvu                          djvu  djv
image/vnd.dwg                           dwg
image/vnd.dxb                           dxb
image/vnd.dxf                           dxf
image/vnd.fastbidsheet                  fbs
image/vnd.fpx                           fpx
image/vnd.fst                           fst
image/vnd.fujixerox.edmics-mmr          mmr
image/vnd.fujixerox.edmics-rlc          rlc
image/vnd.ms-modi                       mdi
image/vnd.net-fpx                       npx
image/vnd.wap.wbmp                      wbmp
image/vnd.xiff                          xif
image/webp                              webp
image/x-bpg                             bpg
image/x-cmu-raster                      ras
image/x-cmx                             cmx
image/x-freehand                        fh11  ft8  fh  fh5  ft11  ft12  fh10  fh7  fh50  fh9  ft7  fh4  fh8  ft9  fh40  fhc  ft10  fh12
image/x-icns                            icns
image/x-icon                            ico
image/x-jp2-codestream                  j2c
image/x-pcx                             pcx
image/x-pict                            pict  pct  pic
image/x-portable-anymap                 pnm
image/x-portable-bitmap                 pbm
image/x-portable-graymap                pgm
image/x-portable-pixmap                 ppm
image/x-raw-adobe                       dng
image/x-raw-canon                       crw  cr2
image/x-raw-casio                       bay
image/x-raw-epson                       erf
image/x-raw-fuji                        raf
image/x-raw-hasselblad                  3fr
image/x-raw-imacon                      fff
image/x-raw-kodak                       kdc  dcs  drf  k25
image/x-raw-leaf                        mos
image/x-raw-logitech                    pxn
image/x-raw-mamiya                      mef
image/x-raw-minolta                     mrw
image/x-raw-nikon                       nef  nrw
image/x-raw-olympus                     orf
image/x-raw-panasonic                   raw  rw2
image/x-raw-pentax                      pef  ptx
image/x-raw-phaseone                    iiq
image/x-raw-rawzor                      rwz
image/x-raw-red                         r3d
image/x-raw-sigma                       x3f
image/x-raw-sony                        sr2  srf  arw
image/x-rgb                             rgb
image/x-wmf                             wmf
image/x-xbitmap                         xbm
image/x-xcf                             xcf
image/x-xpixmap                         xpm
image/x-xwindowdump                     xwd


#消息
message/rfc822                          mime  mhtml  eml  mht  nws
message/x-emlx                          emlx


#模型
model/iges                              igs  iges
model/mesh                              silo  mesh  msh
model/vnd.dwf                           dwf
model/vnd.dwfx+xps                      dwfx
model/vnd.gdl                           gdl
model/vnd.gtw                           gtw
model/vnd.mts                           mts
model/vnd.vtu                           vtu
model/vrml                              vrml  wrl


#文本
text/asp                                asp
text/aspdotnet                          aspx
text/calendar                           ifb  ics
text/css                                css
text/csv                                csv
text/html                               htm  html  shtml
text/iso19139+xml                       iso19139
text/javascript                         js  cjs  mjs
text/plain                              keys  classpath project  list  mf  pom  jmx  xgrm  rnx  egrm  dcl  grm  xroles  fv  xcat  xsp  xmap  ac  xconf  cfg  config  types  rng  xegrm  cwiki  ft  MF  aart  def  ihtml  n3  tld  xlex  xweb  ent  xargs  m4  text  pen  txt  g  am  manifest  vm  meta  vsl  conf  xlog  fn  in  roles  xwelcome  junit  wsdd  jx  xsamples  data  pod
text/prs.lines.tag                      dsc
text/richtext                           rtx
text/sgml                               sgm  sgml
text/tab-separated-values               tsv
text/troff                              tr  me  man  ms  t  roff
text/uri-list                           uri  urls  uris
text/vnd.curl                           curl
text/vnd.curl.dcurl                     dcurl
text/vnd.curl.mcurl                     mcurl
text/vnd.curl.scurl                     scurl
text/vnd.fly                            fly
text/vnd.fmi.flexstor                   flx
text/vnd.graphviz                       gv
text/vnd.in3d.3dml                      3dml
text/vnd.in3d.spot                      spot
text/vnd.iptc.anpa                      anpa
text/vnd.sun.j2me.app-descriptor        jad
text/vnd.wap.wml                        wml
text/vnd.wap.wmlscript                  wmls
text/vtt                                vtt
text/x-actionscript                     as
text/x-ada                              ada  adb  ads
text/x-applescript                      applescript
text/x-asciidoc                         asciidoc  ad  adoc
text/x-aspectj                          aj
text/x-assembly                         asm  s
text/x-awk                              awk
text/x-basic                            bas
text/x-c                                dic
text/x-c++hdr                           hpp  hh  hp    h++  hxx
text/x-c++src                           cpp  cxx  cc  c  c++
text/x-cgi                              cgi
text/x-chdr                             h
text/x-clojure                          clj
text/x-cobol                            cob  cbl
text/x-coffeescript                     coffee
text/x-coldfusion                       cfc  cfml  cfm
text/x-common-lisp                      lsp  cl  lisp  jl
text/x-csharp                           cs
text/x-csrc                             c
text/x-d                                d
text/x-diff                             patch  diff
text/x-eiffel                           e
text/x-emacs-lisp                       el
text/x-erlang                           erl
text/x-expect                           exp
text/x-forth                            4th
text/x-fortran                          f77  for  f  f90
text/x-go                               go
text/x-groovy                           groovy
text/x-haml                             haml
text/x-haskell                          hs  lhs
text/x-haxe                             hx
text/x-idl                              idl
text/x-ini                              ini
text/x-java-properties                  properties
text/x-java-source                      java
text/x-jsp                              jsp
text/x-less                             less
text/x-lex                              l
text/x-log                              log
text/x-lua                              lua
text/x-ml                               ml
text/x-modula                           m3  ig  i3  mg
text/x-objcsrc                          m
text/x-ocaml                            mli  ocaml
text/x-pascal                           pp  p  pas  dpr
text/x-perl                             pm  pl  al  perl
text/x-php                              php4  php3  php
text/x-prolog                           pro
text/x-python                           py
text/x-rexx                             rexx
text/x-rsrc                             r
text/x-rst                              rest  rst  restx
text/x-ruby                             rb
text/x-scala                            scala
text/x-scheme                           scm
text/x-sed                              sed
text/x-setext                           etx
text/x-sql                              sql
text/x-stsrc                            st
text/x-tcl                              itk  tcl  tk
text/x-uuencode                         uu
text/x-vbasic                           frm  cls
text/x-vbdotnet                         vb
text/x-vbscript                         vbs
text/x-vcalendar                        vcs
text/x-vcard                            vcf
text/x-verilog                          v
text/x-vhdl                             vhdl  vhd
text/x-web-markdown                     md  markdown  mkd  mdtext
text/x-yacc                             y
text/x-yaml                             yaml  yml
text/xml                                xml


#视频
video/3gpp                              3gp
video/3gpp2                             3g2
video/h261                              h261
video/h263                              h263
video/h264                              h264
video/jpeg                              jpgv
video/mj2                               mj2  mjp2
video/mp2t                              ts
video/mp4                               mp4v  mp4  mpg4
video/mpeg                              mpeg  m2v  mpe  mpg  m1v  mpa
video/ogg                               ogv
video/quicktime                         qt  mov
video/vnd.dlna.mpeg-tts                 ts
video/vnd.fvt                           fvt
video/vnd.mpegurl                       mxu  m4u
video/vnd.ms-playready.media.pyv        pyv
video/vnd.rn-realvideo                  rmvb
video/vnd.vivo                          viv
video/webm                              webm
video/x-dirac                           drc
video/x-f4v                             f4v
video/x-flc                             flc
video/x-fli                             fli
video/x-flv                             flv
video/x-jng                             jng
video/x-m4v                             m4v
video/x-matroska                        mkv
video/x-mng                             mng
video/x-ms-asf                          asx  asf
video/x-ms-wm                           wm
video/x-ms-wmv                          wmv
video/x-ms-wmx                          wmx
video/x-ms-wvx                          wvx
video/x-msvideo                         avi
video/x-ogm                             ogm
video/x-sgi-movie                       movie


#其他
gcode                                   gcode
x-conference/x-cooltalk                 ice

优缺点

优点

轻量级集成,解析速度很快,底层基于Map进行匹配

缺点

只能根据文件后缀进行匹配,准确率不高

依赖(二选一,取决于使用项目使用哪套体系)

<!-- jakarta -->
<dependency>
    <groupId>jakarta.activation</groupId>
    <artifactId>jakarta.activation-api</artifactId>
    <version>2.1.3</version>
</dependency>
<!-- javax -->
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>javax.activation-api</artifactId>
    <version>1.2.0</version>
</dependency>

代码示例

// 建议定义为静态常量,可复用
MimetypesFileTypeMap mimeTypeMap = new MimetypesFileTypeMap();
// 传入文件名,得到文件类型,判断失败则返回application/octet-stream
String contentType = tika.getContentType("");

总结

实际项目中,建议两种方案一起使用,先使用tika进行判断,如何结果为application/octet-stream,再使用activation进行判断