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

前言

最近在弄文件上传、下载、在线预览时经常需要设置请求标头或者响应标头的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
ezapplication/andrew-inset
awapplication/applixware
atomapplication/atom+xml
atomcatapplication/atomcat+xml
atomsvcapplication/atomsvc+xml
ccxmlapplication/ccxml+xml
cdmiaapplication/cdmi-capability
cdmicapplication/cdmi-container
cdmidapplication/cdmi-domain
cdmioapplication/cdmi-object
cdmiqapplication/cdmi-queue
cuapplication/cu-seeme
davmountapplication/davmount+xml
dbkapplication/docbook+xml
dsscapplication/dssc+der
xdsscapplication/dssc+xml
ecmaapplication/ecmascript
emmaapplication/emma+xml
epubapplication/epub+zip
exiapplication/exi
pfrapplication/font-tdpfr
woffapplication/font-woff
gmlapplication/gml+xml
gpxapplication/gpx+xml
gxfapplication/gxf
stkapplication/hyperstudio
inkapplication/inkml+xml
inkmlapplication/inkml+xml
ipfixapplication/ipfix
jarapplication/java-archive
serapplication/java-serialized-object
classapplication/java-vm
jsapplication/javascript
jsonapplication/json
jsonmlapplication/jsonml+json
lostxmlapplication/lost+xml
hqxapplication/mac-binhex40
cptapplication/mac-compactpro
madsapplication/mads+xml
mrcapplication/marc
mrcxapplication/marcxml+xml
maapplication/mathematica
nbapplication/mathematica
mbapplication/mathematica
mathmlapplication/mathml+xml
mboxapplication/mbox
mscmlapplication/mediaservercontrol+xml
metalinkapplication/metalink+xml
meta4application/metalink4+xml
metsapplication/mets+xml
modsapplication/mods+xml
m21application/mp21
mp21application/mp21
mp4sapplication/mp4
docapplication/msword
dotapplication/msword
mxfapplication/mxf
binapplication/octet-stream
dmsapplication/octet-stream
lrfapplication/octet-stream
marapplication/octet-stream
soapplication/octet-stream
distapplication/octet-stream
distzapplication/octet-stream
pkgapplication/octet-stream
bpkapplication/octet-stream
dumpapplication/octet-stream
elcapplication/octet-stream
deployapplication/octet-stream
odaapplication/oda
opfapplication/oebps-package+xml
ogxapplication/ogg
omdocapplication/omdoc+xml
onetocapplication/onenote
onetoc2application/onenote
onetmpapplication/onenote
onepkgapplication/onenote
oxpsapplication/oxps
xerapplication/patch-ops-error+xml
pdfapplication/pdf
pgpapplication/pgp-encrypted
ascapplication/pgp-signature
sigapplication/pgp-signature
prfapplication/pics-rules
p10application/pkcs10
p7mapplication/pkcs7-mime
p7capplication/pkcs7-mime
p7sapplication/pkcs7-signature
p8application/pkcs8
acapplication/pkix-attr-cert
cerapplication/pkix-cert
crlapplication/pkix-crl
pkipathapplication/pkix-pkipath
pkiapplication/pkixcmp
plsapplication/pls+xml
aiapplication/postscript
epsapplication/postscript
psapplication/postscript
cwwapplication/prs.cww
pskcxmlapplication/pskc+xml
rdfapplication/rdf+xml
rifapplication/reginfo+xml
rncapplication/relax-ng-compact-syntax
rlapplication/resource-lists+xml
rldapplication/resource-lists-diff+xml
rsapplication/rls-services+xml
gbrapplication/rpki-ghostbusters
mftapplication/rpki-manifest
roaapplication/rpki-roa
rsdapplication/rsd+xml
rssapplication/rss+xml
rtfapplication/rtf
sbmlapplication/sbml+xml
scqapplication/scvp-cv-request
scsapplication/scvp-cv-response
spqapplication/scvp-vp-request
sppapplication/scvp-vp-response
sdpapplication/sdp
setpayapplication/set-payment-initiation
setregapplication/set-registration-initiation
shfapplication/shf+xml
smiapplication/smil+xml
smilapplication/smil+xml
rqapplication/sparql-query
srxapplication/sparql-results+xml
gramapplication/srgs
grxmlapplication/srgs+xml
sruapplication/sru+xml
ssdlapplication/ssdl+xml
ssmlapplication/ssml+xml
teiapplication/tei+xml
teicorpusapplication/tei+xml
tfiapplication/thraud+xml
tsdapplication/timestamped-data
plbapplication/vnd.3gpp.pic-bw-large
psbapplication/vnd.3gpp.pic-bw-small
pvbapplication/vnd.3gpp.pic-bw-var
tcapapplication/vnd.3gpp2.tcap
pwnapplication/vnd.3m.post-it-notes
asoapplication/vnd.accpac.simply.aso
impapplication/vnd.accpac.simply.imp
acuapplication/vnd.acucobol
atcapplication/vnd.acucorp
acutcapplication/vnd.acucorp
airapplication/vnd.adobe.air-application-installer-package+zip
fcdtapplication/vnd.adobe.formscentral.fcdt
fxpapplication/vnd.adobe.fxp
fxplapplication/vnd.adobe.fxp
xdpapplication/vnd.adobe.xdp+xml
xfdfapplication/vnd.adobe.xfdf
aheadapplication/vnd.ahead.space
azfapplication/vnd.airzip.filesecure.azf
azsapplication/vnd.airzip.filesecure.azs
azwapplication/vnd.amazon.ebook
accapplication/vnd.americandynamics.acc
amiapplication/vnd.amiga.ami
apkapplication/vnd.android.package-archive
ciiapplication/vnd.anser-web-certificate-issue-initiation
ftiapplication/vnd.anser-web-funds-transfer-initiation
atxapplication/vnd.antix.game-component
mpkgapplication/vnd.apple.installer+xml
m3u8application/vnd.apple.mpegurl
swiapplication/vnd.aristanetworks.swi
iotaapplication/vnd.astraea-software.iota
aepapplication/vnd.audiograph
mpmapplication/vnd.blueice.multipass
bmiapplication/vnd.bmi
repapplication/vnd.businessobjects
cdxmlapplication/vnd.chemdraw+xml
mmdapplication/vnd.chipnuts.karaoke-mmd
cdyapplication/vnd.cinderella
claapplication/vnd.claymore
rp9application/vnd.cloanto.rp9
c4gapplication/vnd.clonk.c4group
c4dapplication/vnd.clonk.c4group
c4fapplication/vnd.clonk.c4group
c4papplication/vnd.clonk.c4group
c4uapplication/vnd.clonk.c4group
c11amcapplication/vnd.cluetrust.cartomobile-config
c11amzapplication/vnd.cluetrust.cartomobile-config-pkg
cspapplication/vnd.commonspace
cdbcmsgapplication/vnd.contact.cmsg
cmcapplication/vnd.cosmocaller
clkxapplication/vnd.crick.clicker
clkkapplication/vnd.crick.clicker.keyboard
clkpapplication/vnd.crick.clicker.palette
clktapplication/vnd.crick.clicker.template
clkwapplication/vnd.crick.clicker.wordbank
wbsapplication/vnd.criticaltools.wbs+xml
pmlapplication/vnd.ctc-posml
ppdapplication/vnd.cups-ppd
carapplication/vnd.curl.car
pcurlapplication/vnd.curl.pcurl
dartapplication/vnd.dart
rdzapplication/vnd.data-vision.rdz
uvfapplication/vnd.dece.data
uvvfapplication/vnd.dece.data
uvdapplication/vnd.dece.data
uvvdapplication/vnd.dece.data
uvtapplication/vnd.dece.ttml+xml
uvvtapplication/vnd.dece.ttml+xml
uvxapplication/vnd.dece.unspecified
uvvxapplication/vnd.dece.unspecified
uvzapplication/vnd.dece.zip
uvvzapplication/vnd.dece.zip
fe_launchapplication/vnd.denovo.fcselayout-link
dnaapplication/vnd.dna
mlpapplication/vnd.dolby.mlp
dpgapplication/vnd.dpgraph
dfacapplication/vnd.dreamfactory
kpxxapplication/vnd.ds-keypoint
aitapplication/vnd.dvb.ait
svcapplication/vnd.dvb.service
geoapplication/vnd.dynageo
magapplication/vnd.ecowin.chart
nmlapplication/vnd.enliven
esfapplication/vnd.epson.esf
msfapplication/vnd.epson.msf
qamapplication/vnd.epson.quickanime
sltapplication/vnd.epson.salt
ssfapplication/vnd.epson.ssf
es3application/vnd.eszigno3+xml
et3application/vnd.eszigno3+xml
ez2application/vnd.ezpix-album
ez3application/vnd.ezpix-package
fdfapplication/vnd.fdf
mseedapplication/vnd.fdsn.mseed
seedapplication/vnd.fdsn.seed
datalessapplication/vnd.fdsn.seed
gphapplication/vnd.flographit
ftcapplication/vnd.fluxtime.clip
fmapplication/vnd.framemaker
frameapplication/vnd.framemaker
makerapplication/vnd.framemaker
bookapplication/vnd.framemaker
fncapplication/vnd.frogans.fnc
ltfapplication/vnd.frogans.ltf
fscapplication/vnd.fsc.weblaunch
oasapplication/vnd.fujitsu.oasys
oa2application/vnd.fujitsu.oasys2
oa3application/vnd.fujitsu.oasys3
fg5application/vnd.fujitsu.oasysgp
bh2application/vnd.fujitsu.oasysprs
dddapplication/vnd.fujixerox.ddd
xdwapplication/vnd.fujixerox.docuworks
xbdapplication/vnd.fujixerox.docuworks.binder
fzsapplication/vnd.fuzzysheet
txdapplication/vnd.genomatix.tuxedo
ggbapplication/vnd.geogebra.file
ggtapplication/vnd.geogebra.tool
gexapplication/vnd.geometry-explorer
greapplication/vnd.geometry-explorer
gxtapplication/vnd.geonext
g2wapplication/vnd.geoplan
g3wapplication/vnd.geospace
gmxapplication/vnd.gmx
kmlapplication/vnd.google-earth.kml+xml
kmzapplication/vnd.google-earth.kmz
gqfapplication/vnd.grafeq
gqsapplication/vnd.grafeq
gacapplication/vnd.groove-account
ghfapplication/vnd.groove-help
gimapplication/vnd.groove-identity-message
grvapplication/vnd.groove-injector
gtmapplication/vnd.groove-tool-message
tplapplication/vnd.groove-tool-template
vcgapplication/vnd.groove-vcard
halapplication/vnd.hal+xml
zmmapplication/vnd.handheld-entertainment+xml
hbciapplication/vnd.hbci
lesapplication/vnd.hhe.lesson-player
hpglapplication/vnd.hp-hpgl
hpidapplication/vnd.hp-hpid
hpsapplication/vnd.hp-hps
jltapplication/vnd.hp-jlyt
pclapplication/vnd.hp-pcl
pclxlapplication/vnd.hp-pclxl
sfd-hdstxapplication/vnd.hydrostatix.sof-data
mpyapplication/vnd.ibm.minipay
afpapplication/vnd.ibm.modcap
listafpapplication/vnd.ibm.modcap
list3820application/vnd.ibm.modcap
irmapplication/vnd.ibm.rights-management
scapplication/vnd.ibm.secure-container
iccapplication/vnd.iccprofile
icmapplication/vnd.iccprofile
iglapplication/vnd.igloader
ivpapplication/vnd.immervision-ivp
ivuapplication/vnd.immervision-ivu
igmapplication/vnd.insors.igm
xpwapplication/vnd.intercon.formnet
xpxapplication/vnd.intercon.formnet
i2gapplication/vnd.intergeo
qboapplication/vnd.intu.qbo
qfxapplication/vnd.intu.qfx
rcprofileapplication/vnd.ipunplugged.rcprofile
irpapplication/vnd.irepository.package+xml
xprapplication/vnd.is-xpr
fcsapplication/vnd.isac.fcs
jamapplication/vnd.jam
rmsapplication/vnd.jcp.javame.midlet-rms
jispapplication/vnd.jisp
jodaapplication/vnd.joost.joda-archive
ktzapplication/vnd.kahootz
ktrapplication/vnd.kahootz
karbonapplication/vnd.kde.karbon
chrtapplication/vnd.kde.kchart
kfoapplication/vnd.kde.kformula
flwapplication/vnd.kde.kivio
konapplication/vnd.kde.kontour
kprapplication/vnd.kde.kpresenter
kptapplication/vnd.kde.kpresenter
kspapplication/vnd.kde.kspread
kwdapplication/vnd.kde.kword
kwtapplication/vnd.kde.kword
htkeapplication/vnd.kenameaapp
kiaapplication/vnd.kidspiration
kneapplication/vnd.kinar
knpapplication/vnd.kinar
skpapplication/vnd.koan
skdapplication/vnd.koan
sktapplication/vnd.koan
skmapplication/vnd.koan
sseapplication/vnd.kodak-descriptor
lasxmlapplication/vnd.las.las+xml
lbdapplication/vnd.llamagraphics.life-balance.desktop
lbeapplication/vnd.llamagraphics.life-balance.exchange+xml
123application/vnd.lotus-1-2-3
aprapplication/vnd.lotus-approach
preapplication/vnd.lotus-freelance
nsfapplication/vnd.lotus-notes
orgapplication/vnd.lotus-organizer
scmapplication/vnd.lotus-screencam
lwpapplication/vnd.lotus-wordpro
portpkgapplication/vnd.macports.portpkg
mcdapplication/vnd.mcd
mc1application/vnd.medcalcdata
cdkeyapplication/vnd.mediastation.cdkey
mwfapplication/vnd.mfer
mfmapplication/vnd.mfmp
floapplication/vnd.micrografx.flo
igxapplication/vnd.micrografx.igx
mifapplication/vnd.mif
dafapplication/vnd.mobius.daf
disapplication/vnd.mobius.dis
mbkapplication/vnd.mobius.mbk
mqyapplication/vnd.mobius.mqy
mslapplication/vnd.mobius.msl
plcapplication/vnd.mobius.plc
txfapplication/vnd.mobius.txf
mpnapplication/vnd.mophun.application
mpcapplication/vnd.mophun.certificate
xulapplication/vnd.mozilla.xul+xml
cilapplication/vnd.ms-artgalry
cabapplication/vnd.ms-cab-compressed
xlsapplication/vnd.ms-excel
xlmapplication/vnd.ms-excel
xlaapplication/vnd.ms-excel
xlcapplication/vnd.ms-excel
xltapplication/vnd.ms-excel
xlwapplication/vnd.ms-excel
xlamapplication/vnd.ms-excel.addin.macroenabled.12
xlsbapplication/vnd.ms-excel.sheet.binary.macroenabled.12
xlsmapplication/vnd.ms-excel.sheet.macroenabled.12
xltmapplication/vnd.ms-excel.template.macroenabled.12
eotapplication/vnd.ms-fontobject
chmapplication/vnd.ms-htmlhelp
imsapplication/vnd.ms-ims
lrmapplication/vnd.ms-lrm
thmxapplication/vnd.ms-officetheme
catapplication/vnd.ms-pki.seccat
stlapplication/vnd.ms-pki.stl
pptapplication/vnd.ms-powerpoint
ppsapplication/vnd.ms-powerpoint
potapplication/vnd.ms-powerpoint
ppamapplication/vnd.ms-powerpoint.addin.macroenabled.12
pptmapplication/vnd.ms-powerpoint.presentation.macroenabled.12
sldmapplication/vnd.ms-powerpoint.slide.macroenabled.12
ppsmapplication/vnd.ms-powerpoint.slideshow.macroenabled.12
potmapplication/vnd.ms-powerpoint.template.macroenabled.12
mppapplication/vnd.ms-project
mptapplication/vnd.ms-project
docmapplication/vnd.ms-word.document.macroenabled.12
dotmapplication/vnd.ms-word.template.macroenabled.12
wpsapplication/vnd.ms-works
wksapplication/vnd.ms-works
wcmapplication/vnd.ms-works
wdbapplication/vnd.ms-works
wplapplication/vnd.ms-wpl
xpsapplication/vnd.ms-xpsdocument
mseqapplication/vnd.mseq
musapplication/vnd.musician
mstyapplication/vnd.muvee.style
tagletapplication/vnd.mynfc
nluapplication/vnd.neurolanguage.nlu
ntfapplication/vnd.nitf
nitfapplication/vnd.nitf
nndapplication/vnd.noblenet-directory
nnsapplication/vnd.noblenet-sealer
nnwapplication/vnd.noblenet-web
ngdatapplication/vnd.nokia.n-gage.data
n-gageapplication/vnd.nokia.n-gage.symbian.install
rpstapplication/vnd.nokia.radio-preset
rpssapplication/vnd.nokia.radio-presets
edmapplication/vnd.novadigm.edm
edxapplication/vnd.novadigm.edx
extapplication/vnd.novadigm.ext
odcapplication/vnd.oasis.opendocument.chart
otcapplication/vnd.oasis.opendocument.chart-template
odbapplication/vnd.oasis.opendocument.database
odfapplication/vnd.oasis.opendocument.formula
odftapplication/vnd.oasis.opendocument.formula-template
odgapplication/vnd.oasis.opendocument.graphics
otgapplication/vnd.oasis.opendocument.graphics-template
odiapplication/vnd.oasis.opendocument.image
otiapplication/vnd.oasis.opendocument.image-template
odpapplication/vnd.oasis.opendocument.presentation
otpapplication/vnd.oasis.opendocument.presentation-template
odsapplication/vnd.oasis.opendocument.spreadsheet
otsapplication/vnd.oasis.opendocument.spreadsheet-template
odtapplication/vnd.oasis.opendocument.text
odmapplication/vnd.oasis.opendocument.text-master
ottapplication/vnd.oasis.opendocument.text-template
othapplication/vnd.oasis.opendocument.text-web
xoapplication/vnd.olpc-sugar
dd2application/vnd.oma.dd2+xml
oxtapplication/vnd.openofficeorg.extension
pptxapplication/vnd.openxmlformats-officedocument.presentationml.presentation
sldxapplication/vnd.openxmlformats-officedocument.presentationml.slide
ppsxapplication/vnd.openxmlformats-officedocument.presentationml.slideshow
potxapplication/vnd.openxmlformats-officedocument.presentationml.template
xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet
xltxapplication/vnd.openxmlformats-officedocument.spreadsheetml.template
docxapplication/vnd.openxmlformats-officedocument.wordprocessingml.document
dotxapplication/vnd.openxmlformats-officedocument.wordprocessingml.template
mgpapplication/vnd.osgeo.mapguide.package
dpapplication/vnd.osgi.dp
esaapplication/vnd.osgi.subsystem
pdbapplication/vnd.palm
pqaapplication/vnd.palm
oprcapplication/vnd.palm
pawapplication/vnd.pawaafile
strapplication/vnd.pg.format
ei6application/vnd.pg.osasli
efifapplication/vnd.picsel
wgapplication/vnd.pmi.widget
plfapplication/vnd.pocketlearn
pbdapplication/vnd.powerbuilder6
boxapplication/vnd.previewsystems.box
mgzapplication/vnd.proteus.magazine
qpsapplication/vnd.publishare-delta-tree
ptidapplication/vnd.pvi.ptid1
qxdapplication/vnd.quark.quarkxpress
qxtapplication/vnd.quark.quarkxpress
qwdapplication/vnd.quark.quarkxpress
qwtapplication/vnd.quark.quarkxpress
qxlapplication/vnd.quark.quarkxpress
qxbapplication/vnd.quark.quarkxpress
bedapplication/vnd.realvnc.bed
mxlapplication/vnd.recordare.musicxml
musicxmlapplication/vnd.recordare.musicxml+xml
cryptonoteapplication/vnd.rig.cryptonote
codapplication/vnd.rim.cod
rmapplication/vnd.rn-realmedia
rmvbapplication/vnd.rn-realmedia-vbr
link66application/vnd.route66.link66+xml
stapplication/vnd.sailingtracker.track
seeapplication/vnd.seemail
semaapplication/vnd.sema
semdapplication/vnd.semd
semfapplication/vnd.semf
ifmapplication/vnd.shana.informed.formdata
itpapplication/vnd.shana.informed.formtemplate
iifapplication/vnd.shana.informed.interchange
ipkapplication/vnd.shana.informed.package
twdapplication/vnd.simtech-mindmapper
twdsapplication/vnd.simtech-mindmapper
mmfapplication/vnd.smaf
teacherapplication/vnd.smart.teacher
sdkmapplication/vnd.solent.sdkm+xml
sdkdapplication/vnd.solent.sdkm+xml
dxpapplication/vnd.spotfire.dxp
sfsapplication/vnd.spotfire.sfs
sdcapplication/vnd.stardivision.calc
sdaapplication/vnd.stardivision.draw
sddapplication/vnd.stardivision.impress
smfapplication/vnd.stardivision.math
sdwapplication/vnd.stardivision.writer
vorapplication/vnd.stardivision.writer
sglapplication/vnd.stardivision.writer-global
smzipapplication/vnd.stepmania.package
smapplication/vnd.stepmania.stepchart
sxcapplication/vnd.sun.xml.calc
stcapplication/vnd.sun.xml.calc.template
sxdapplication/vnd.sun.xml.draw
stdapplication/vnd.sun.xml.draw.template
sxiapplication/vnd.sun.xml.impress
stiapplication/vnd.sun.xml.impress.template
sxmapplication/vnd.sun.xml.math
sxwapplication/vnd.sun.xml.writer
sxgapplication/vnd.sun.xml.writer.global
stwapplication/vnd.sun.xml.writer.template
susapplication/vnd.sus-calendar
suspapplication/vnd.sus-calendar
svdapplication/vnd.svd
sisapplication/vnd.symbian.install
sisxapplication/vnd.symbian.install
xsmapplication/vnd.syncml+xml
bdmapplication/vnd.syncml.dm+wbxml
xdmapplication/vnd.syncml.dm+xml
taoapplication/vnd.tao.intent-module-archive
pcapapplication/vnd.tcpdump.pcap
capapplication/vnd.tcpdump.pcap
dmpapplication/vnd.tcpdump.pcap
tmoapplication/vnd.tmobile-livetv
tptapplication/vnd.trid.tpt
mxsapplication/vnd.triscape.mxs
traapplication/vnd.trueapp
ufdapplication/vnd.ufdl
ufdlapplication/vnd.ufdl
utzapplication/vnd.uiq.theme
umjapplication/vnd.umajin
unitywebapplication/vnd.unity
uomlapplication/vnd.uoml+xml
vcxapplication/vnd.vcx
vsdapplication/vnd.visio
vstapplication/vnd.visio
vssapplication/vnd.visio
vswapplication/vnd.visio
visapplication/vnd.visionary
vsfapplication/vnd.vsf
wbxmlapplication/vnd.wap.wbxml
wmlcapplication/vnd.wap.wmlc
wmlscapplication/vnd.wap.wmlscriptc
wtbapplication/vnd.webturbo
nbpapplication/vnd.wolfram.player
wpdapplication/vnd.wordperfect
wqdapplication/vnd.wqd
stfapplication/vnd.wt.stf
xarapplication/vnd.xara
xfdlapplication/vnd.xfdl
hvdapplication/vnd.yamaha.hv-dic
hvsapplication/vnd.yamaha.hv-script
hvpapplication/vnd.yamaha.hv-voice
osfapplication/vnd.yamaha.openscoreformat
osfpvgapplication/vnd.yamaha.openscoreformat.osfpvg+xml
safapplication/vnd.yamaha.smaf-audio
spfapplication/vnd.yamaha.smaf-phrase
cmpapplication/vnd.yellowriver-custom-menu
zirapplication/vnd.zul
zirzapplication/vnd.zul
zazapplication/vnd.zzazz.deck+xml
vxmlapplication/voicexml+xml
wgtapplication/widget
hlpapplication/winhlp
wsdlapplication/wsdl+xml
wspolicyapplication/wspolicy+xml
7zapplication/x-7z-compressed
abwapplication/x-abiword
aceapplication/x-ace-compressed
dmgapplication/x-apple-diskimage
aabapplication/x-authorware-bin
x32application/x-authorware-bin
u32application/x-authorware-bin
voxapplication/x-authorware-bin
aamapplication/x-authorware-map
aasapplication/x-authorware-seg
bcpioapplication/x-bcpio
torrentapplication/x-bittorrent
blbapplication/x-blorb
blorbapplication/x-blorb
bzapplication/x-bzip
bz2application/x-bzip2
bozapplication/x-bzip2
cbrapplication/x-cbr
cbaapplication/x-cbr
cbtapplication/x-cbr
cbzapplication/x-cbr
cb7application/x-cbr
vcdapplication/x-cdlink
cfsapplication/x-cfs-compressed
chatapplication/x-chat
pgnapplication/x-chess-pgn
nscapplication/x-conference
cpioapplication/x-cpio
cshapplication/x-csh
debapplication/x-debian-package
udebapplication/x-debian-package
dgcapplication/x-dgc-compressed
dirapplication/x-director
dcrapplication/x-director
dxrapplication/x-director
cstapplication/x-director
cctapplication/x-director
cxtapplication/x-director
w3dapplication/x-director
fgdapplication/x-director
swaapplication/x-director
wadapplication/x-doom
ncxapplication/x-dtbncx+xml
dtbapplication/x-dtbook+xml
resapplication/x-dtbresource+xml
dviapplication/x-dvi
evyapplication/x-envoy
evaapplication/x-eva
bdfapplication/x-font-bdf
gsfapplication/x-font-ghostscript
psfapplication/x-font-linux-psf
otfapplication/x-font-otf
pcfapplication/x-font-pcf
snfapplication/x-font-snf
ttfapplication/x-font-ttf
ttcapplication/x-font-ttf
pfaapplication/x-font-type1
pfbapplication/x-font-type1
pfmapplication/x-font-type1
afmapplication/x-font-type1
arcapplication/x-freearc
splapplication/x-futuresplash
gcaapplication/x-gca-compressed
ulxapplication/x-glulx
gnumericapplication/x-gnumeric
grampsapplication/x-gramps-xml
gtarapplication/x-gtar
hdfapplication/x-hdf
installapplication/x-install-instructions
isoapplication/x-iso9660-image
jnlpapplication/x-java-jnlp-file
latexapplication/x-latex
lzhapplication/x-lzh-compressed
lhaapplication/x-lzh-compressed
mieapplication/x-mie
prcapplication/x-mobipocket-ebook
mobiapplication/x-mobipocket-ebook
applicationapplication/x-ms-application
lnkapplication/x-ms-shortcut
wmdapplication/x-ms-wmd
wmzapplication/x-ms-wmz
xbapapplication/x-ms-xbap
mdbapplication/x-msaccess
obdapplication/x-msbinder
crdapplication/x-mscardfile
clpapplication/x-msclip
exeapplication/x-msdownload
dllapplication/x-msdownload
comapplication/x-msdownload
batapplication/x-msdownload
msiapplication/x-msdownload
mvbapplication/x-msmediaview
m13application/x-msmediaview
m14application/x-msmediaview
wmfapplication/x-msmetafile
emfapplication/x-msmetafile
emzapplication/x-msmetafile
mnyapplication/x-msmoney
pubapplication/x-mspublisher
scdapplication/x-msschedule
trmapplication/x-msterminal
wriapplication/x-mswrite
ncapplication/x-netcdf
cdfapplication/x-netcdf
nzbapplication/x-nzb
p12application/x-pkcs12
pfxapplication/x-pkcs12
p7bapplication/x-pkcs7-certificates
spcapplication/x-pkcs7-certificates
p7rapplication/x-pkcs7-certreqresp
rarapplication/x-rar-compressed
risapplication/x-research-info-systems
shapplication/x-sh
sharapplication/x-shar
swfapplication/x-shockwave-flash
xapapplication/x-silverlight-app
sqlapplication/x-sql
sitapplication/x-stuffit
sitxapplication/x-stuffitx
srtapplication/x-subrip
sv4cpioapplication/x-sv4cpio
sv4crcapplication/x-sv4crc
t3application/x-t3vm-image
gamapplication/x-tads
tarapplication/x-tar
tclapplication/x-tcl
texapplication/x-tex
tfmapplication/x-tex-tfm
texinfoapplication/x-texinfo
texiapplication/x-texinfo
objapplication/x-tgif
ustarapplication/x-ustar
srcapplication/x-wais-source
derapplication/x-x509-ca-cert
crtapplication/x-x509-ca-cert
figapplication/x-xfig
xlfapplication/x-xliff+xml
xpiapplication/x-xpinstall
xzapplication/x-xz
z1application/x-zmachine
z2application/x-zmachine
z3application/x-zmachine
z4application/x-zmachine
z5application/x-zmachine
z6application/x-zmachine
z7application/x-zmachine
z8application/x-zmachine
xamlapplication/xaml+xml
xdfapplication/xcap-diff+xml
xencapplication/xenc+xml
xhtmlapplication/xhtml+xml
xhtapplication/xhtml+xml
xmlapplication/xml
xslapplication/xml
dtdapplication/xml-dtd
xopapplication/xop+xml
xplapplication/xproc+xml
xsltapplication/xslt+xml
xspfapplication/xspf+xml
mxmlapplication/xv+xml
xhvmlapplication/xv+xml
xvmlapplication/xv+xml
xvmapplication/xv+xml
yangapplication/yang
yinapplication/yin+xml
zipapplication/zip
adpaudio/adpcm
auaudio/basic
sndaudio/basic
midaudio/midi
midiaudio/midi
karaudio/midi
rmiaudio/midi
m4aaudio/mp4
mp4aaudio/mp4
mpgaaudio/mpeg
mp2audio/mpeg
mp2aaudio/mpeg
mp3audio/mpeg
m2aaudio/mpeg
m3aaudio/mpeg
ogaaudio/ogg
oggaudio/ogg
spxaudio/ogg
s3maudio/s3m
silaudio/silk
uvaaudio/vnd.dece.audio
uvvaaudio/vnd.dece.audio
eolaudio/vnd.digital-winds
draaudio/vnd.dra
dtsaudio/vnd.dts
dtshdaudio/vnd.dts.hd
lvpaudio/vnd.lucent.voice
pyaaudio/vnd.ms-playready.media.pya
ecelp4800audio/vnd.nuera.ecelp4800
ecelp7470audio/vnd.nuera.ecelp7470
ecelp9600audio/vnd.nuera.ecelp9600
ripaudio/vnd.rip
webaaudio/webm
aacaudio/x-aac
aifaudio/x-aiff
aiffaudio/x-aiff
aifcaudio/x-aiff
cafaudio/x-caf
flacaudio/x-flac
mkaaudio/x-matroska
m3uaudio/x-mpegurl
waxaudio/x-ms-wax
wmaaudio/x-ms-wma
ramaudio/x-pn-realaudio
raaudio/x-pn-realaudio
rmpaudio/x-pn-realaudio-plugin
wavaudio/x-wav
xmaudio/xm
cdxchemical/x-cdx
cifchemical/x-cif
cmdfchemical/x-cmdf
cmlchemical/x-cml
csmlchemical/x-csml
xyzchemical/x-xyz
bmpimage/bmp
cgmimage/cgm
g3image/g3fax
gifimage/gif
iefimage/ief
jpegimage/jpeg
jpgimage/jpeg
jpeimage/jpeg
ktximage/ktx
pngimage/png
btifimage/prs.btif
sgiimage/sgi
svgimage/svg+xml
svgzimage/svg+xml
tiffimage/tiff
tifimage/tiff
psdimage/vnd.adobe.photoshop
uviimage/vnd.dece.graphic
uvviimage/vnd.dece.graphic
uvgimage/vnd.dece.graphic
uvvgimage/vnd.dece.graphic
djvuimage/vnd.djvu
djvimage/vnd.djvu
subimage/vnd.dvb.subtitle
dwgimage/vnd.dwg
dxfimage/vnd.dxf
fbsimage/vnd.fastbidsheet
fpximage/vnd.fpx
fstimage/vnd.fst
mmrimage/vnd.fujixerox.edmics-mmr
rlcimage/vnd.fujixerox.edmics-rlc
mdiimage/vnd.ms-modi
wdpimage/vnd.ms-photo
npximage/vnd.net-fpx
wbmpimage/vnd.wap.wbmp
xifimage/vnd.xiff
webpimage/webp
3dsimage/x-3ds
rasimage/x-cmu-raster
cmximage/x-cmx
fhimage/x-freehand
fhcimage/x-freehand
fh4image/x-freehand
fh5image/x-freehand
fh7image/x-freehand
icoimage/x-icon
sidimage/x-mrsid-image
pcximage/x-pcx
picimage/x-pict
pctimage/x-pict
pnmimage/x-portable-anymap
pbmimage/x-portable-bitmap
pgmimage/x-portable-graymap
ppmimage/x-portable-pixmap
rgbimage/x-rgb
tgaimage/x-tga
xbmimage/x-xbitmap
xpmimage/x-xpixmap
xwdimage/x-xwindowdump
emlmessage/rfc822
mimemessage/rfc822
igsmodel/iges
igesmodel/iges
mshmodel/mesh
meshmodel/mesh
silomodel/mesh
daemodel/vnd.collada+xml
dwfmodel/vnd.dwf
gdlmodel/vnd.gdl
gtwmodel/vnd.gtw
mtsmodel/vnd.mts
vtumodel/vnd.vtu
wrlmodel/vrml
vrmlmodel/vrml
x3dbmodel/x3d+binary
x3dbzmodel/x3d+binary
x3dvmodel/x3d+vrml
x3dvzmodel/x3d+vrml
x3dmodel/x3d+xml
x3dzmodel/x3d+xml
appcachetext/cache-manifest
icstext/calendar
ifbtext/calendar
csstext/css
csvtext/csv
htmltext/html
htmtext/html
n3text/n3
txttext/plain
texttext/plain
conftext/plain
deftext/plain
listtext/plain
logtext/plain
intext/plain
dsctext/prs.lines.tag
rtxtext/richtext
sgmltext/sgml
sgmtext/sgml
tsvtext/tab-separated-values
ttext/troff
trtext/troff
rofftext/troff
mantext/troff
metext/troff
mstext/troff
ttltext/turtle
uritext/uri-list
uristext/uri-list
urlstext/uri-list
vcardtext/vcard
curltext/vnd.curl
dcurltext/vnd.curl.dcurl
mcurltext/vnd.curl.mcurl
scurltext/vnd.curl.scurl
flytext/vnd.fly
flxtext/vnd.fmi.flexstor
gvtext/vnd.graphviz
3dmltext/vnd.in3d.3dml
spottext/vnd.in3d.spot
jadtext/vnd.sun.j2me.app-descriptor
wmltext/vnd.wap.wml
wmlstext/vnd.wap.wmlscript
stext/x-asm
asmtext/x-asm
ctext/x-c
cctext/x-c
cxxtext/x-c
cpptext/x-c
htext/x-c
hhtext/x-c
dictext/x-c
ftext/x-fortran
fortext/x-fortran
f77text/x-fortran
f90text/x-fortran
javatext/x-java-source
nfotext/x-nfo
opmltext/x-opml
ptext/x-pascal
pastext/x-pascal
etxtext/x-setext
sfvtext/x-sfv
uutext/x-uuencode
vcstext/x-vcalendar
vcftext/x-vcard
3gpvideo/3gpp
3g2video/3gpp2
h261video/h261
h263video/h263
h264video/h264
jpgvvideo/jpeg
jpmvideo/jpm
jpgmvideo/jpm
mj2video/mj2
mjp2video/mj2
mp4video/mp4
mp4vvideo/mp4
mpg4video/mp4
mpegvideo/mpeg
mpgvideo/mpeg
mpevideo/mpeg
m1vvideo/mpeg
m2vvideo/mpeg
ogvvideo/ogg
qtvideo/quicktime
movvideo/quicktime
uvhvideo/vnd.dece.hd
uvvhvideo/vnd.dece.hd
uvmvideo/vnd.dece.mobile
uvvmvideo/vnd.dece.mobile
uvpvideo/vnd.dece.pd
uvvpvideo/vnd.dece.pd
uvsvideo/vnd.dece.sd
uvvsvideo/vnd.dece.sd
uvvvideo/vnd.dece.video
uvvvvideo/vnd.dece.video
dvbvideo/vnd.dvb.file
fvtvideo/vnd.fvt
mxuvideo/vnd.mpegurl
m4uvideo/vnd.mpegurl
pyvvideo/vnd.ms-playready.media.pyv
uvuvideo/vnd.uvvu.mp4
uvvuvideo/vnd.uvvu.mp4
vivvideo/vnd.vivo
webmvideo/webm
f4vvideo/x-f4v
flivideo/x-fli
flvvideo/x-flv
m4vvideo/x-m4v
mkvvideo/x-matroska
mk3dvideo/x-matroska
mksvideo/x-matroska
mngvideo/x-mng
asfvideo/x-ms-asf
asxvideo/x-ms-asf
vobvideo/x-ms-vob
wmvideo/x-ms-wm
wmvvideo/x-ms-wmv
wmxvideo/x-ms-wmx
wvxvideo/x-ms-wvx
avivideo/x-msvideo
movievideo/x-sgi-movie
smvvideo/x-smv
icex-conference/x-cooltalk

如何获取文件的Content-Type

1、使用spring-web包下MediaTypeFactory

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

2、使用Apache Tika

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知北游z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值