整理spring-web里支持的文件以及对应的Content-Type
阅读原文时间:2023年08月05日阅读:4

前言

最近在弄文件上传、下载、在线预览时经常需要设置请求标头或者响应标头的Content-Type 属性。所以研究了一下spring支持哪些Content-Type,通过研究MediaTypeFactory.getMediaType的源码,可以得知spring是将支持的Content-Type 维护在/org/springframework/http/mime.types文件中。

private static MultiValueMap<String, MediaType> parseMimeTypes() {
        InputStream is = MediaTypeFactory.class.getResourceAsStream("/org/springframework/http/mime.types");

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.US_ASCII));
            Throwable var2 = null;

            try {
                MultiValueMap<String, MediaType> result = new LinkedMultiValueMap();

                label111:
                while(true) {
                    String line;
                    if ((line = reader.readLine()) != null) {
                        if (line.isEmpty() || line.charAt(0) == '#') {
                            continue;
                        }

                        String[] tokens = StringUtils.tokenizeToStringArray(line, " \t\n\r\f");
                        MediaType mediaType = MediaType.parseMediaType(tokens[0]);
                        int i = 1;

                        while(true) {
                            if (i >= tokens.length) {
                                continue label111;
                            }

                            String fileExtension = tokens[i].toLowerCase(Locale.ENGLISH);
                            result.add(fileExtension, mediaType);
                            ++i;
                        }
                    }

                    LinkedMultiValueMap var5 = result;
                    return var5;
                }
            } catch (Throwable var17) {
                var2 = var17;
                throw var17;
            } finally {
                if (reader != null) {
                    if (var2 != null) {
                        try {
                            reader.close();
                        } catch (Throwable var16) {
                            var2.addSuppressed(var16);
                        }
                    } else {
                        reader.close();
                    }
                }

            }
        } catch (IOException var19) {
            throw new IllegalStateException("Could not load '/org/springframework/http/mime.types'", var19);
        }
    }

通过上面查找文件的路径找到了org.springframework:spring-web包下http目录中的mime.types文件

结果打开后居然发现 有多达1838个Content-Type,不过许多都是被注释掉的。过滤掉被注释的最终能被获取出来的一共是982个,本着好记性不如烂笔头的精神,我把这982个Content-Type已经它对应的文件后缀,整理了一下,形成了下面的表格,也方便以后查阅。

mime.types文件:

​spring-web将mime.types文件加载到这个map里

spring-web里支持的文件以及对应的Content-Type

文件类型

MIME Type

ez

application/andrew-inset

aw

application/applixware

atom

application/atom+xml

atomcat

application/atomcat+xml

atomsvc

application/atomsvc+xml

ccxml

application/ccxml+xml

cdmia

application/cdmi-capability

cdmic

application/cdmi-container

cdmid

application/cdmi-domain

cdmio

application/cdmi-object

cdmiq

application/cdmi-queue

cu

application/cu-seeme

davmount

application/davmount+xml

dbk

application/docbook+xml

dssc

application/dssc+der

xdssc

application/dssc+xml

ecma

application/ecmascript

emma

application/emma+xml

epub

application/epub+zip

exi

application/exi

pfr

application/font-tdpfr

woff

application/font-woff

gml

application/gml+xml

gpx

application/gpx+xml

gxf

application/gxf

stk

application/hyperstudio

ink

application/inkml+xml

inkml

application/inkml+xml

ipfix

application/ipfix

jar

application/java-archive

ser

application/java-serialized-object

class

application/java-vm

js

application/javascript

json

application/json

jsonml

application/jsonml+json

lostxml

application/lost+xml

hqx

application/mac-binhex40

cpt

application/mac-compactpro

mads

application/mads+xml

mrc

application/marc

mrcx

application/marcxml+xml

ma

application/mathematica

nb

application/mathematica

mb

application/mathematica

mathml

application/mathml+xml

mbox

application/mbox

mscml

application/mediaservercontrol+xml

metalink

application/metalink+xml

meta4

application/metalink4+xml

mets

application/mets+xml

mods

application/mods+xml

m21

application/mp21

mp21

application/mp21

mp4s

application/mp4

doc

application/msword

dot

application/msword

mxf

application/mxf

bin

application/octet-stream

dms

application/octet-stream

lrf

application/octet-stream

mar

application/octet-stream

so

application/octet-stream

dist

application/octet-stream

distz

application/octet-stream

pkg

application/octet-stream

bpk

application/octet-stream

dump

application/octet-stream

elc

application/octet-stream

deploy

application/octet-stream

oda

application/oda

opf

application/oebps-package+xml

ogx

application/ogg

omdoc

application/omdoc+xml

onetoc

application/onenote

onetoc2

application/onenote

onetmp

application/onenote

onepkg

application/onenote

oxps

application/oxps

xer

application/patch-ops-error+xml

pdf

application/pdf

pgp

application/pgp-encrypted

asc

application/pgp-signature

sig

application/pgp-signature

prf

application/pics-rules

p10

application/pkcs10

p7m

application/pkcs7-mime

p7c

application/pkcs7-mime

p7s

application/pkcs7-signature

p8

application/pkcs8

ac

application/pkix-attr-cert

cer

application/pkix-cert

crl

application/pkix-crl

pkipath

application/pkix-pkipath

pki

application/pkixcmp

pls

application/pls+xml

ai

application/postscript

eps

application/postscript

ps

application/postscript

cww

application/prs.cww

pskcxml

application/pskc+xml

rdf

application/rdf+xml

rif

application/reginfo+xml

rnc

application/relax-ng-compact-syntax

rl

application/resource-lists+xml

rld

application/resource-lists-diff+xml

rs

application/rls-services+xml

gbr

application/rpki-ghostbusters

mft

application/rpki-manifest

roa

application/rpki-roa

rsd

application/rsd+xml

rss

application/rss+xml

rtf

application/rtf

sbml

application/sbml+xml

scq

application/scvp-cv-request

scs

application/scvp-cv-response

spq

application/scvp-vp-request

spp

application/scvp-vp-response

sdp

application/sdp

setpay

application/set-payment-initiation

setreg

application/set-registration-initiation

shf

application/shf+xml

smi

application/smil+xml

smil

application/smil+xml

rq

application/sparql-query

srx

application/sparql-results+xml

gram

application/srgs

grxml

application/srgs+xml

sru

application/sru+xml

ssdl

application/ssdl+xml

ssml

application/ssml+xml

tei

application/tei+xml

teicorpus

application/tei+xml

tfi

application/thraud+xml

tsd

application/timestamped-data

plb

application/vnd.3gpp.pic-bw-large

psb

application/vnd.3gpp.pic-bw-small

pvb

application/vnd.3gpp.pic-bw-var

tcap

application/vnd.3gpp2.tcap

pwn

application/vnd.3m.post-it-notes

aso

application/vnd.accpac.simply.aso

imp

application/vnd.accpac.simply.imp

acu

application/vnd.acucobol

atc

application/vnd.acucorp

acutc

application/vnd.acucorp

air

application/vnd.adobe.air-application-installer-package+zip

fcdt

application/vnd.adobe.formscentral.fcdt

fxp

application/vnd.adobe.fxp

fxpl

application/vnd.adobe.fxp

xdp

application/vnd.adobe.xdp+xml

xfdf

application/vnd.adobe.xfdf

ahead

application/vnd.ahead.space

azf

application/vnd.airzip.filesecure.azf

azs

application/vnd.airzip.filesecure.azs

azw

application/vnd.amazon.ebook

acc

application/vnd.americandynamics.acc

ami

application/vnd.amiga.ami

apk

application/vnd.android.package-archive

cii

application/vnd.anser-web-certificate-issue-initiation

fti

application/vnd.anser-web-funds-transfer-initiation

atx

application/vnd.antix.game-component

mpkg

application/vnd.apple.installer+xml

m3u8

application/vnd.apple.mpegurl

swi

application/vnd.aristanetworks.swi

iota

application/vnd.astraea-software.iota

aep

application/vnd.audiograph

mpm

application/vnd.blueice.multipass

bmi

application/vnd.bmi

rep

application/vnd.businessobjects

cdxml

application/vnd.chemdraw+xml

mmd

application/vnd.chipnuts.karaoke-mmd

cdy

application/vnd.cinderella

cla

application/vnd.claymore

rp9

application/vnd.cloanto.rp9

c4g

application/vnd.clonk.c4group

c4d

application/vnd.clonk.c4group

c4f

application/vnd.clonk.c4group

c4p

application/vnd.clonk.c4group

c4u

application/vnd.clonk.c4group

c11amc

application/vnd.cluetrust.cartomobile-config

c11amz

application/vnd.cluetrust.cartomobile-config-pkg

csp

application/vnd.commonspace

cdbcmsg

application/vnd.contact.cmsg

cmc

application/vnd.cosmocaller

clkx

application/vnd.crick.clicker

clkk

application/vnd.crick.clicker.keyboard

clkp

application/vnd.crick.clicker.palette

clkt

application/vnd.crick.clicker.template

clkw

application/vnd.crick.clicker.wordbank

wbs

application/vnd.criticaltools.wbs+xml

pml

application/vnd.ctc-posml

ppd

application/vnd.cups-ppd

car

application/vnd.curl.car

pcurl

application/vnd.curl.pcurl

dart

application/vnd.dart

rdz

application/vnd.data-vision.rdz

uvf

application/vnd.dece.data

uvvf

application/vnd.dece.data

uvd

application/vnd.dece.data

uvvd

application/vnd.dece.data

uvt

application/vnd.dece.ttml+xml

uvvt

application/vnd.dece.ttml+xml

uvx

application/vnd.dece.unspecified

uvvx

application/vnd.dece.unspecified

uvz

application/vnd.dece.zip

uvvz

application/vnd.dece.zip

fe_launch

application/vnd.denovo.fcselayout-link

dna

application/vnd.dna

mlp

application/vnd.dolby.mlp

dpg

application/vnd.dpgraph

dfac

application/vnd.dreamfactory

kpxx

application/vnd.ds-keypoint

ait

application/vnd.dvb.ait

svc

application/vnd.dvb.service

geo

application/vnd.dynageo

mag

application/vnd.ecowin.chart

nml

application/vnd.enliven

esf

application/vnd.epson.esf

msf

application/vnd.epson.msf

qam

application/vnd.epson.quickanime

slt

application/vnd.epson.salt

ssf

application/vnd.epson.ssf

es3

application/vnd.eszigno3+xml

et3

application/vnd.eszigno3+xml

ez2

application/vnd.ezpix-album

ez3

application/vnd.ezpix-package

fdf

application/vnd.fdf

mseed

application/vnd.fdsn.mseed

seed

application/vnd.fdsn.seed

dataless

application/vnd.fdsn.seed

gph

application/vnd.flographit

ftc

application/vnd.fluxtime.clip

fm

application/vnd.framemaker

frame

application/vnd.framemaker

maker

application/vnd.framemaker

book

application/vnd.framemaker

fnc

application/vnd.frogans.fnc

ltf

application/vnd.frogans.ltf

fsc

application/vnd.fsc.weblaunch

oas

application/vnd.fujitsu.oasys

oa2

application/vnd.fujitsu.oasys2

oa3

application/vnd.fujitsu.oasys3

fg5

application/vnd.fujitsu.oasysgp

bh2

application/vnd.fujitsu.oasysprs

ddd

application/vnd.fujixerox.ddd

xdw

application/vnd.fujixerox.docuworks

xbd

application/vnd.fujixerox.docuworks.binder

fzs

application/vnd.fuzzysheet

txd

application/vnd.genomatix.tuxedo

ggb

application/vnd.geogebra.file

ggt

application/vnd.geogebra.tool

gex

application/vnd.geometry-explorer

gre

application/vnd.geometry-explorer

gxt

application/vnd.geonext

g2w

application/vnd.geoplan

g3w

application/vnd.geospace

gmx

application/vnd.gmx

kml

application/vnd.google-earth.kml+xml

kmz

application/vnd.google-earth.kmz

gqf

application/vnd.grafeq

gqs

application/vnd.grafeq

gac

application/vnd.groove-account

ghf

application/vnd.groove-help

gim

application/vnd.groove-identity-message

grv

application/vnd.groove-injector

gtm

application/vnd.groove-tool-message

tpl

application/vnd.groove-tool-template

vcg

application/vnd.groove-vcard

hal

application/vnd.hal+xml

zmm

application/vnd.handheld-entertainment+xml

hbci

application/vnd.hbci

les

application/vnd.hhe.lesson-player

hpgl

application/vnd.hp-hpgl

hpid

application/vnd.hp-hpid

hps

application/vnd.hp-hps

jlt

application/vnd.hp-jlyt

pcl

application/vnd.hp-pcl

pclxl

application/vnd.hp-pclxl

sfd-hdstx

application/vnd.hydrostatix.sof-data

mpy

application/vnd.ibm.minipay

afp

application/vnd.ibm.modcap

listafp

application/vnd.ibm.modcap

list3820

application/vnd.ibm.modcap

irm

application/vnd.ibm.rights-management

sc

application/vnd.ibm.secure-container

icc

application/vnd.iccprofile

icm

application/vnd.iccprofile

igl

application/vnd.igloader

ivp

application/vnd.immervision-ivp

ivu

application/vnd.immervision-ivu

igm

application/vnd.insors.igm

xpw

application/vnd.intercon.formnet

xpx

application/vnd.intercon.formnet

i2g

application/vnd.intergeo

qbo

application/vnd.intu.qbo

qfx

application/vnd.intu.qfx

rcprofile

application/vnd.ipunplugged.rcprofile

irp

application/vnd.irepository.package+xml

xpr

application/vnd.is-xpr

fcs

application/vnd.isac.fcs

jam

application/vnd.jam

rms

application/vnd.jcp.javame.midlet-rms

jisp

application/vnd.jisp

joda

application/vnd.joost.joda-archive

ktz

application/vnd.kahootz

ktr

application/vnd.kahootz

karbon

application/vnd.kde.karbon

chrt

application/vnd.kde.kchart

kfo

application/vnd.kde.kformula

flw

application/vnd.kde.kivio

kon

application/vnd.kde.kontour

kpr

application/vnd.kde.kpresenter

kpt

application/vnd.kde.kpresenter

ksp

application/vnd.kde.kspread

kwd

application/vnd.kde.kword

kwt

application/vnd.kde.kword

htke

application/vnd.kenameaapp

kia

application/vnd.kidspiration

kne

application/vnd.kinar

knp

application/vnd.kinar

skp

application/vnd.koan

skd

application/vnd.koan

skt

application/vnd.koan

skm

application/vnd.koan

sse

application/vnd.kodak-descriptor

lasxml

application/vnd.las.las+xml

lbd

application/vnd.llamagraphics.life-balance.desktop

lbe

application/vnd.llamagraphics.life-balance.exchange+xml

123

application/vnd.lotus-1-2-3

apr

application/vnd.lotus-approach

pre

application/vnd.lotus-freelance

nsf

application/vnd.lotus-notes

org

application/vnd.lotus-organizer

scm

application/vnd.lotus-screencam

lwp

application/vnd.lotus-wordpro

portpkg

application/vnd.macports.portpkg

mcd

application/vnd.mcd

mc1

application/vnd.medcalcdata

cdkey

application/vnd.mediastation.cdkey

mwf

application/vnd.mfer

mfm

application/vnd.mfmp

flo

application/vnd.micrografx.flo

igx

application/vnd.micrografx.igx

mif

application/vnd.mif

daf

application/vnd.mobius.daf

dis

application/vnd.mobius.dis

mbk

application/vnd.mobius.mbk

mqy

application/vnd.mobius.mqy

msl

application/vnd.mobius.msl

plc

application/vnd.mobius.plc

txf

application/vnd.mobius.txf

mpn

application/vnd.mophun.application

mpc

application/vnd.mophun.certificate

xul

application/vnd.mozilla.xul+xml

cil

application/vnd.ms-artgalry

cab

application/vnd.ms-cab-compressed

xls

application/vnd.ms-excel

xlm

application/vnd.ms-excel

xla

application/vnd.ms-excel

xlc

application/vnd.ms-excel

xlt

application/vnd.ms-excel

xlw

application/vnd.ms-excel

xlam

application/vnd.ms-excel.addin.macroenabled.12

xlsb

application/vnd.ms-excel.sheet.binary.macroenabled.12

xlsm

application/vnd.ms-excel.sheet.macroenabled.12

xltm

application/vnd.ms-excel.template.macroenabled.12

eot

application/vnd.ms-fontobject

chm

application/vnd.ms-htmlhelp

ims

application/vnd.ms-ims

lrm

application/vnd.ms-lrm

thmx

application/vnd.ms-officetheme

cat

application/vnd.ms-pki.seccat

stl

application/vnd.ms-pki.stl

ppt

application/vnd.ms-powerpoint

pps

application/vnd.ms-powerpoint

pot

application/vnd.ms-powerpoint

ppam

application/vnd.ms-powerpoint.addin.macroenabled.12

pptm

application/vnd.ms-powerpoint.presentation.macroenabled.12

sldm

application/vnd.ms-powerpoint.slide.macroenabled.12

ppsm

application/vnd.ms-powerpoint.slideshow.macroenabled.12

potm

application/vnd.ms-powerpoint.template.macroenabled.12

mpp

application/vnd.ms-project

mpt

application/vnd.ms-project

docm

application/vnd.ms-word.document.macroenabled.12

dotm

application/vnd.ms-word.template.macroenabled.12

wps

application/vnd.ms-works

wks

application/vnd.ms-works

wcm

application/vnd.ms-works

wdb

application/vnd.ms-works

wpl

application/vnd.ms-wpl

xps

application/vnd.ms-xpsdocument

mseq

application/vnd.mseq

mus

application/vnd.musician

msty

application/vnd.muvee.style

taglet

application/vnd.mynfc

nlu

application/vnd.neurolanguage.nlu

ntf

application/vnd.nitf

nitf

application/vnd.nitf

nnd

application/vnd.noblenet-directory

nns

application/vnd.noblenet-sealer

nnw

application/vnd.noblenet-web

ngdat

application/vnd.nokia.n-gage.data

n-gage

application/vnd.nokia.n-gage.symbian.install

rpst

application/vnd.nokia.radio-preset

rpss

application/vnd.nokia.radio-presets

edm

application/vnd.novadigm.edm

edx

application/vnd.novadigm.edx

ext

application/vnd.novadigm.ext

odc

application/vnd.oasis.opendocument.chart

otc

application/vnd.oasis.opendocument.chart-template

odb

application/vnd.oasis.opendocument.database

odf

application/vnd.oasis.opendocument.formula

odft

application/vnd.oasis.opendocument.formula-template

odg

application/vnd.oasis.opendocument.graphics

otg

application/vnd.oasis.opendocument.graphics-template

odi

application/vnd.oasis.opendocument.image

oti

application/vnd.oasis.opendocument.image-template

odp

application/vnd.oasis.opendocument.presentation

otp

application/vnd.oasis.opendocument.presentation-template

ods

application/vnd.oasis.opendocument.spreadsheet

ots

application/vnd.oasis.opendocument.spreadsheet-template

odt

application/vnd.oasis.opendocument.text

odm

application/vnd.oasis.opendocument.text-master

ott

application/vnd.oasis.opendocument.text-template

oth

application/vnd.oasis.opendocument.text-web

xo

application/vnd.olpc-sugar

dd2

application/vnd.oma.dd2+xml

oxt

application/vnd.openofficeorg.extension

pptx

application/vnd.openxmlformats-officedocument.presentationml.presentation

sldx

application/vnd.openxmlformats-officedocument.presentationml.slide

ppsx

application/vnd.openxmlformats-officedocument.presentationml.slideshow

potx

application/vnd.openxmlformats-officedocument.presentationml.template

xlsx

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

xltx

application/vnd.openxmlformats-officedocument.spreadsheetml.template

docx

application/vnd.openxmlformats-officedocument.wordprocessingml.document

dotx

application/vnd.openxmlformats-officedocument.wordprocessingml.template

mgp

application/vnd.osgeo.mapguide.package

dp

application/vnd.osgi.dp

esa

application/vnd.osgi.subsystem

pdb

application/vnd.palm

pqa

application/vnd.palm

oprc

application/vnd.palm

paw

application/vnd.pawaafile

str

application/vnd.pg.format

ei6

application/vnd.pg.osasli

efif

application/vnd.picsel

wg

application/vnd.pmi.widget

plf

application/vnd.pocketlearn

pbd

application/vnd.powerbuilder6

box

application/vnd.previewsystems.box

mgz

application/vnd.proteus.magazine

qps

application/vnd.publishare-delta-tree

ptid

application/vnd.pvi.ptid1

qxd

application/vnd.quark.quarkxpress

qxt

application/vnd.quark.quarkxpress

qwd

application/vnd.quark.quarkxpress

qwt

application/vnd.quark.quarkxpress

qxl

application/vnd.quark.quarkxpress

qxb

application/vnd.quark.quarkxpress

bed

application/vnd.realvnc.bed

mxl

application/vnd.recordare.musicxml

musicxml

application/vnd.recordare.musicxml+xml

cryptonote

application/vnd.rig.cryptonote

cod

application/vnd.rim.cod

rm

application/vnd.rn-realmedia

rmvb

application/vnd.rn-realmedia-vbr

link66

application/vnd.route66.link66+xml

st

application/vnd.sailingtracker.track

see

application/vnd.seemail

sema

application/vnd.sema

semd

application/vnd.semd

semf

application/vnd.semf

ifm

application/vnd.shana.informed.formdata

itp

application/vnd.shana.informed.formtemplate

iif

application/vnd.shana.informed.interchange

ipk

application/vnd.shana.informed.package

twd

application/vnd.simtech-mindmapper

twds

application/vnd.simtech-mindmapper

mmf

application/vnd.smaf

teacher

application/vnd.smart.teacher

sdkm

application/vnd.solent.sdkm+xml

sdkd

application/vnd.solent.sdkm+xml

dxp

application/vnd.spotfire.dxp

sfs

application/vnd.spotfire.sfs

sdc

application/vnd.stardivision.calc

sda

application/vnd.stardivision.draw

sdd

application/vnd.stardivision.impress

smf

application/vnd.stardivision.math

sdw

application/vnd.stardivision.writer

vor

application/vnd.stardivision.writer

sgl

application/vnd.stardivision.writer-global

smzip

application/vnd.stepmania.package

sm

application/vnd.stepmania.stepchart

sxc

application/vnd.sun.xml.calc

stc

application/vnd.sun.xml.calc.template

sxd

application/vnd.sun.xml.draw

std

application/vnd.sun.xml.draw.template

sxi

application/vnd.sun.xml.impress

sti

application/vnd.sun.xml.impress.template

sxm

application/vnd.sun.xml.math

sxw

application/vnd.sun.xml.writer

sxg

application/vnd.sun.xml.writer.global

stw

application/vnd.sun.xml.writer.template

sus

application/vnd.sus-calendar

susp

application/vnd.sus-calendar

svd

application/vnd.svd

sis

application/vnd.symbian.install

sisx

application/vnd.symbian.install

xsm

application/vnd.syncml+xml

bdm

application/vnd.syncml.dm+wbxml

xdm

application/vnd.syncml.dm+xml

tao

application/vnd.tao.intent-module-archive

pcap

application/vnd.tcpdump.pcap

cap

application/vnd.tcpdump.pcap

dmp

application/vnd.tcpdump.pcap

tmo

application/vnd.tmobile-livetv

tpt

application/vnd.trid.tpt

mxs

application/vnd.triscape.mxs

tra

application/vnd.trueapp

ufd

application/vnd.ufdl

ufdl

application/vnd.ufdl

utz

application/vnd.uiq.theme

umj

application/vnd.umajin

unityweb

application/vnd.unity

uoml

application/vnd.uoml+xml

vcx

application/vnd.vcx

vsd

application/vnd.visio

vst

application/vnd.visio

vss

application/vnd.visio

vsw

application/vnd.visio

vis

application/vnd.visionary

vsf

application/vnd.vsf

wbxml

application/vnd.wap.wbxml

wmlc

application/vnd.wap.wmlc

wmlsc

application/vnd.wap.wmlscriptc

wtb

application/vnd.webturbo

nbp

application/vnd.wolfram.player

wpd

application/vnd.wordperfect

wqd

application/vnd.wqd

stf

application/vnd.wt.stf

xar

application/vnd.xara

xfdl

application/vnd.xfdl

hvd

application/vnd.yamaha.hv-dic

hvs

application/vnd.yamaha.hv-script

hvp

application/vnd.yamaha.hv-voice

osf

application/vnd.yamaha.openscoreformat

osfpvg

application/vnd.yamaha.openscoreformat.osfpvg+xml

saf

application/vnd.yamaha.smaf-audio

spf

application/vnd.yamaha.smaf-phrase

cmp

application/vnd.yellowriver-custom-menu

zir

application/vnd.zul

zirz

application/vnd.zul

zaz

application/vnd.zzazz.deck+xml

vxml

application/voicexml+xml

wgt

application/widget

hlp

application/winhlp

wsdl

application/wsdl+xml

wspolicy

application/wspolicy+xml

7z

application/x-7z-compressed

abw

application/x-abiword

ace

application/x-ace-compressed

dmg

application/x-apple-diskimage

aab

application/x-authorware-bin

x32

application/x-authorware-bin

u32

application/x-authorware-bin

vox

application/x-authorware-bin

aam

application/x-authorware-map

aas

application/x-authorware-seg

bcpio

application/x-bcpio

torrent

application/x-bittorrent

blb

application/x-blorb

blorb

application/x-blorb

bz

application/x-bzip

bz2

application/x-bzip2

boz

application/x-bzip2

cbr

application/x-cbr

cba

application/x-cbr

cbt

application/x-cbr

cbz

application/x-cbr

cb7

application/x-cbr

vcd

application/x-cdlink

cfs

application/x-cfs-compressed

chat

application/x-chat

pgn

application/x-chess-pgn

nsc

application/x-conference

cpio

application/x-cpio

csh

application/x-csh

deb

application/x-debian-package

udeb

application/x-debian-package

dgc

application/x-dgc-compressed

dir

application/x-director

dcr

application/x-director

dxr

application/x-director

cst

application/x-director

cct

application/x-director

cxt

application/x-director

w3d

application/x-director

fgd

application/x-director

swa

application/x-director

wad

application/x-doom

ncx

application/x-dtbncx+xml

dtb

application/x-dtbook+xml

res

application/x-dtbresource+xml

dvi

application/x-dvi

evy

application/x-envoy

eva

application/x-eva

bdf

application/x-font-bdf

gsf

application/x-font-ghostscript

psf

application/x-font-linux-psf

otf

application/x-font-otf

pcf

application/x-font-pcf

snf

application/x-font-snf

ttf

application/x-font-ttf

ttc

application/x-font-ttf

pfa

application/x-font-type1

pfb

application/x-font-type1

pfm

application/x-font-type1

afm

application/x-font-type1

arc

application/x-freearc

spl

application/x-futuresplash

gca

application/x-gca-compressed

ulx

application/x-glulx

gnumeric

application/x-gnumeric

gramps

application/x-gramps-xml

gtar

application/x-gtar

hdf

application/x-hdf

install

application/x-install-instructions

iso

application/x-iso9660-image

jnlp

application/x-java-jnlp-file

latex

application/x-latex

lzh

application/x-lzh-compressed

lha

application/x-lzh-compressed

mie

application/x-mie

prc

application/x-mobipocket-ebook

mobi

application/x-mobipocket-ebook

application

application/x-ms-application

lnk

application/x-ms-shortcut

wmd

application/x-ms-wmd

wmz

application/x-ms-wmz

xbap

application/x-ms-xbap

mdb

application/x-msaccess

obd

application/x-msbinder

crd

application/x-mscardfile

clp

application/x-msclip

exe

application/x-msdownload

dll

application/x-msdownload

com

application/x-msdownload

bat

application/x-msdownload

msi

application/x-msdownload

mvb

application/x-msmediaview

m13

application/x-msmediaview

m14

application/x-msmediaview

wmf

application/x-msmetafile

emf

application/x-msmetafile

emz

application/x-msmetafile

mny

application/x-msmoney

pub

application/x-mspublisher

scd

application/x-msschedule

trm

application/x-msterminal

wri

application/x-mswrite

nc

application/x-netcdf

cdf

application/x-netcdf

nzb

application/x-nzb

p12

application/x-pkcs12

pfx

application/x-pkcs12

p7b

application/x-pkcs7-certificates

spc

application/x-pkcs7-certificates

p7r

application/x-pkcs7-certreqresp

rar

application/x-rar-compressed

ris

application/x-research-info-systems

sh

application/x-sh

shar

application/x-shar

swf

application/x-shockwave-flash

xap

application/x-silverlight-app

sql

application/x-sql

sit

application/x-stuffit

sitx

application/x-stuffitx

srt

application/x-subrip

sv4cpio

application/x-sv4cpio

sv4crc

application/x-sv4crc

t3

application/x-t3vm-image

gam

application/x-tads

tar

application/x-tar

tcl

application/x-tcl

tex

application/x-tex

tfm

application/x-tex-tfm

texinfo

application/x-texinfo

texi

application/x-texinfo

obj

application/x-tgif

ustar

application/x-ustar

src

application/x-wais-source

der

application/x-x509-ca-cert

crt

application/x-x509-ca-cert

fig

application/x-xfig

xlf

application/x-xliff+xml

xpi

application/x-xpinstall

xz

application/x-xz

z1

application/x-zmachine

z2

application/x-zmachine

z3

application/x-zmachine

z4

application/x-zmachine

z5

application/x-zmachine

z6

application/x-zmachine

z7

application/x-zmachine

z8

application/x-zmachine

xaml

application/xaml+xml

xdf

application/xcap-diff+xml

xenc

application/xenc+xml

xhtml

application/xhtml+xml

xht

application/xhtml+xml

xml

application/xml

xsl

application/xml

dtd

application/xml-dtd

xop

application/xop+xml

xpl

application/xproc+xml

xslt

application/xslt+xml

xspf

application/xspf+xml

mxml

application/xv+xml

xhvml

application/xv+xml

xvml

application/xv+xml

xvm

application/xv+xml

yang

application/yang

yin

application/yin+xml

zip

application/zip

adp

audio/adpcm

au

audio/basic

snd

audio/basic

mid

audio/midi

midi

audio/midi

kar

audio/midi

rmi

audio/midi

m4a

audio/mp4

mp4a

audio/mp4

mpga

audio/mpeg

mp2

audio/mpeg

mp2a

audio/mpeg

mp3

audio/mpeg

m2a

audio/mpeg

m3a

audio/mpeg

oga

audio/ogg

ogg

audio/ogg

spx

audio/ogg

s3m

audio/s3m

sil

audio/silk

uva

audio/vnd.dece.audio

uvva

audio/vnd.dece.audio

eol

audio/vnd.digital-winds

dra

audio/vnd.dra

dts

audio/vnd.dts

dtshd

audio/vnd.dts.hd

lvp

audio/vnd.lucent.voice

pya

audio/vnd.ms-playready.media.pya

ecelp4800

audio/vnd.nuera.ecelp4800

ecelp7470

audio/vnd.nuera.ecelp7470

ecelp9600

audio/vnd.nuera.ecelp9600

rip

audio/vnd.rip

weba

audio/webm

aac

audio/x-aac

aif

audio/x-aiff

aiff

audio/x-aiff

aifc

audio/x-aiff

caf

audio/x-caf

flac

audio/x-flac

mka

audio/x-matroska

m3u

audio/x-mpegurl

wax

audio/x-ms-wax

wma

audio/x-ms-wma

ram

audio/x-pn-realaudio

ra

audio/x-pn-realaudio

rmp

audio/x-pn-realaudio-plugin

wav

audio/x-wav

xm

audio/xm

cdx

chemical/x-cdx

cif

chemical/x-cif

cmdf

chemical/x-cmdf

cml

chemical/x-cml

csml

chemical/x-csml

xyz

chemical/x-xyz

bmp

image/bmp

cgm

image/cgm

g3

image/g3fax

gif

image/gif

ief

image/ief

jpeg

image/jpeg

jpg

image/jpeg

jpe

image/jpeg

ktx

image/ktx

png

image/png

btif

image/prs.btif

sgi

image/sgi

svg

image/svg+xml

svgz

image/svg+xml

tiff

image/tiff

tif

image/tiff

psd

image/vnd.adobe.photoshop

uvi

image/vnd.dece.graphic

uvvi

image/vnd.dece.graphic

uvg

image/vnd.dece.graphic

uvvg

image/vnd.dece.graphic

djvu

image/vnd.djvu

djv

image/vnd.djvu

sub

image/vnd.dvb.subtitle

dwg

image/vnd.dwg

dxf

image/vnd.dxf

fbs

image/vnd.fastbidsheet

fpx

image/vnd.fpx

fst

image/vnd.fst

mmr

image/vnd.fujixerox.edmics-mmr

rlc

image/vnd.fujixerox.edmics-rlc

mdi

image/vnd.ms-modi

wdp

image/vnd.ms-photo

npx

image/vnd.net-fpx

wbmp

image/vnd.wap.wbmp

xif

image/vnd.xiff

webp

image/webp

3ds

image/x-3ds

ras

image/x-cmu-raster

cmx

image/x-cmx

fh

image/x-freehand

fhc

image/x-freehand

fh4

image/x-freehand

fh5

image/x-freehand

fh7

image/x-freehand

ico

image/x-icon

sid

image/x-mrsid-image

pcx

image/x-pcx

pic

image/x-pict

pct

image/x-pict

pnm

image/x-portable-anymap

pbm

image/x-portable-bitmap

pgm

image/x-portable-graymap

ppm

image/x-portable-pixmap

rgb

image/x-rgb

tga

image/x-tga

xbm

image/x-xbitmap

xpm

image/x-xpixmap

xwd

image/x-xwindowdump

eml

message/rfc822

mime

message/rfc822

igs

model/iges

iges

model/iges

msh

model/mesh

mesh

model/mesh

silo

model/mesh

dae

model/vnd.collada+xml

dwf

model/vnd.dwf

gdl

model/vnd.gdl

gtw

model/vnd.gtw

mts

model/vnd.mts

vtu

model/vnd.vtu

wrl

model/vrml

vrml

model/vrml

x3db

model/x3d+binary

x3dbz

model/x3d+binary

x3dv

model/x3d+vrml

x3dvz

model/x3d+vrml

x3d

model/x3d+xml

x3dz

model/x3d+xml

appcache

text/cache-manifest

ics

text/calendar

ifb

text/calendar

css

text/css

csv

text/csv

html

text/html

htm

text/html

n3

text/n3

txt

text/plain

text

text/plain

conf

text/plain

def

text/plain

list

text/plain

log

text/plain

in

text/plain

dsc

text/prs.lines.tag

rtx

text/richtext

sgml

text/sgml

sgm

text/sgml

tsv

text/tab-separated-values

t

text/troff

tr

text/troff

roff

text/troff

man

text/troff

me

text/troff

ms

text/troff

ttl

text/turtle

uri

text/uri-list

uris

text/uri-list

urls

text/uri-list

vcard

text/vcard

curl

text/vnd.curl

dcurl

text/vnd.curl.dcurl

mcurl

text/vnd.curl.mcurl

scurl

text/vnd.curl.scurl

fly

text/vnd.fly

flx

text/vnd.fmi.flexstor

gv

text/vnd.graphviz

3dml

text/vnd.in3d.3dml

spot

text/vnd.in3d.spot

jad

text/vnd.sun.j2me.app-descriptor

wml

text/vnd.wap.wml

wmls

text/vnd.wap.wmlscript

s

text/x-asm

asm

text/x-asm

c

text/x-c

cc

text/x-c

cxx

text/x-c

cpp

text/x-c

h

text/x-c

hh

text/x-c

dic

text/x-c

f

text/x-fortran

for

text/x-fortran

f77

text/x-fortran

f90

text/x-fortran

java

text/x-java-source

nfo

text/x-nfo

opml

text/x-opml

p

text/x-pascal

pas

text/x-pascal

etx

text/x-setext

sfv

text/x-sfv

uu

text/x-uuencode

vcs

text/x-vcalendar

vcf

text/x-vcard

3gp

video/3gpp

3g2

video/3gpp2

h261

video/h261

h263

video/h263

h264

video/h264

jpgv

video/jpeg

jpm

video/jpm

jpgm

video/jpm

mj2

video/mj2

mjp2

video/mj2

mp4

video/mp4

mp4v

video/mp4

mpg4

video/mp4

mpeg

video/mpeg

mpg

video/mpeg

mpe

video/mpeg

m1v

video/mpeg

m2v

video/mpeg

ogv

video/ogg

qt

video/quicktime

mov

video/quicktime

uvh

video/vnd.dece.hd

uvvh

video/vnd.dece.hd

uvm

video/vnd.dece.mobile

uvvm

video/vnd.dece.mobile

uvp

video/vnd.dece.pd

uvvp

video/vnd.dece.pd

uvs

video/vnd.dece.sd

uvvs

video/vnd.dece.sd

uvv

video/vnd.dece.video

uvvv

video/vnd.dece.video

dvb

video/vnd.dvb.file

fvt

video/vnd.fvt

mxu

video/vnd.mpegurl

m4u

video/vnd.mpegurl

pyv

video/vnd.ms-playready.media.pyv

uvu

video/vnd.uvvu.mp4

uvvu

video/vnd.uvvu.mp4

viv

video/vnd.vivo

webm

video/webm

f4v

video/x-f4v

fli

video/x-fli

flv

video/x-flv

m4v

video/x-m4v

mkv

video/x-matroska

mk3d

video/x-matroska

mks

video/x-matroska

mng

video/x-mng

asf

video/x-ms-asf

asx

video/x-ms-asf

vob

video/x-ms-vob

wm

video/x-ms-wm

wmv

video/x-ms-wmv

wmx

video/x-ms-wmx

wvx

video/x-ms-wvx

avi

video/x-msvideo

movie

video/x-sgi-movie

smv

video/x-smv

ice

x-conference/x-cooltalk

如何获取文件的Content-Type

MediaTypeFactory是spring-web包下的工具类,需要在pom引用spring-web包,本例使用的是:

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version> 2.2.4.RELEASE</version>
    </dependency>

从源码中可以看到MediaTypeFactory一共提供了三个对外方法,支持通过传入文件名或者Resource对象来获取Content-Type:

 public static Optional<MediaType> getMediaType(@Nullable Resource resource) {
        return Optional.ofNullable(resource).map(Resource::getFilename).flatMap(MediaTypeFactory::getMediaType);
    }

    public static Optional<MediaType> getMediaType(@Nullable String filename) {
        return getMediaTypes(filename).stream().findFirst();
    }

    public static List<MediaType> getMediaTypes(@Nullable String filename) {
        Optional var10000 = Optional.ofNullable(StringUtils.getFilenameExtension(filename)).map((s) -> {
            return s.toLowerCase(Locale.ENGLISH);
        });
        MultiValueMap var10001 = fileExtensionToMediaTypes;
        var10001.getClass();
        return (List)var10000.map(var10001::get).orElse(Collections.emptyList());
    }

我们用传入文件名的方式测试一下:

public static void main(String[] args) {
        MediaType mediaType = MediaTypeFactory.getMediaType("测试.pdf").get();
        String mediaTypeString = mediaType.toString();
        System.out.println(mediaTypeString);
    }

输出结果:

application/pdf

Apache Tika 是一个内容分析工具包,可以检测上千种文件类型,并提取它们的元数据和文本。tika在设计上十分精巧,单一的接口使它易于使用,在搜索引擎索引,内容分析,翻译等诸多方面得到了广泛使用。

使用Apache Tika首先需要在pom引用:

 <dependency>
      <groupId>org.apache.tika</groupId>
      <artifactId>tika-core</artifactId>
      <version>1.28.4</version>
    </dependency>

获取Content-Type 主要是用到其中detect的通过源码我们可以得知(源码太长了就不放了)detect支持通过传入String(文件名)、URL、File、Path、byte[]、InputStream等类型来解析以获取Content-Type

我们用传入byte[]的方式测试一下:

public static void main(String[] args) {
        File file = new File("D:\\书籍\\电子书\\其它\\自然哲学的数学原理.pdf");
        byte[] fileContent = new byte[(int) file.length()];
        try (FileInputStream inputStream = new FileInputStream(file)) {
            inputStream.read(fileContent);
        } catch (IOException e) {
            e.printStackTrace();
        }
        Tika tika = new Tika();
        String mediaTypeString = tika.detect(fileContent);
        System.out.println(mediaTypeString);
    }

输出结果:

application/pdf

注意tika.detect返回的是String类型,如果想像第一种方式一样得到MediaType对象,还需要转换一下。

 MediaType.parseMediaType(mediaTypeString);

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章