最近在弄文件上传、下载、在线预览时经常需要设置请求标头或者响应标头的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里
文件类型
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
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
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);
手机扫一扫
移动阅读更方便
你可能感兴趣的文章