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

这篇具有很好参考价值的文章主要介绍了整理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文件
整理spring-web里支持的文件以及对应的Content-Type

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

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

​spring-web将mime.types文件加载到这个map里
整理spring-web里支持的文件以及对应的Content-Type

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

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对象,还需要转换一下。文章来源地址https://www.toymoban.com/news/detail-487699.html

 MediaType.parseMediaType(mediaTypeString);

到了这里,关于整理spring-web里支持的文件以及对应的Content-Type的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot各版本与Java版本的对应兼容关系,与构建工具(Maven、Gradle)版本的对应兼容关系,对servlet 容器的支持

    by:垃圾程序员 当前文章具有时效性,在当前springboot的版本下做的整合。之后大家视情况可以直接到Spring的官网查看 Spring | Home Level up your Java code and explore what Spring can do for you. https://spring.io/ 下面是Spring Boot各个版本的支持时间 下面是Spring Boot 推荐使用的各个版面,并标注出

    2024年02月10日
    浏览(49)
  • Postman Post请求四种参数传递方式与Content-Type对应关系

    Postman post 请求四种数据传递类型代表的Content-Type类型: 1、form-data : 对应的Content-Type:multipart/form-data;boundary= 表示文件上传; 2、x-www-form-urlencoded:对应的Content-Type:application/x-www-form-urlencoded 表示表单提交; 3、raw:对应的Content-Type分为五类: 4、binary:对应的Content-Type:ap

    2024年02月05日
    浏览(53)
  • 用Java基于Spring框架搭建一套支持多数据源的web系统框架

    在使用Java Spring框架搭建支持多数据源的Web系统框架时,你可以按照以下步骤进行: 步骤一:添加依赖 首先,在 pom.xml 文件中添加Spring Boot和相关数据库依赖: 步骤二:配置多数据源 创建多个数据源配置类,每个数据源对应一个数据库连接: 配置  application.properties  文件,

    2024年03月15日
    浏览(41)
  • Request Headers和Response Headers中的Content-Type以及ResponseType

    HTTP请求响应过程中的Content-type你真的清楚吗 详解get与post请求方式、content-type与responseType、@Requestbody与@Requestparam的使用场景 axios配置请求头content-type浅谈 HTTP 请求头中的Content-Type类型 背景: Request Headers中的Content-Type: XMLHttpRequest 的 responseType 属性 Response Headers中的Content-Type R

    2024年02月13日
    浏览(69)
  • selenium通过performance log获取状态码,Content-Type,以及重定向路径

    selenium的官方不提供获取状态码,Content-Type,以及重定向路径的方法,并且官方说这些功能将来也不会有。java - How to get HTTP Response Code using Selenium WebDriver - Stack Overflow 1.通过requests重新请求一遍url,获取response里面的状态码 2.通过中间代理服务器来获取,比如selenium-wire,selen

    2024年02月02日
    浏览(32)
  • (整理)蓝屏代码对应原因_蓝屏问题解决方法

    笔者由于笔记本经常蓝屏,个别原因较难搜索,决定自己整理蓝屏解决办法。 十六进制值 文字代码 可能的原因 可尝试的解决方法 0x00000001 APC_INDEX_MISMATCH 驱动出现问题,或安装了错误、不兼容的驱动 更新、重新安装相应设备官网的驱动 0x00000005 INVALID_PROCESS_ATTACH_ATTEMPT 驱动出

    2024年02月08日
    浏览(33)
  • Spring Web文件上传功能简述

    在日常项目开发过程中,文件上传是一个非常常见的功能,当然正规项目都有专门的文件服务器保存上传的文件,实际只需要保存文件路径链接到数据库中即可,但在小型项目中可能没有专门的文件服务器用来存储这些文件,这时就需要我们自己手动实现文件上传功能了。

    2024年01月22日
    浏览(37)
  • 后端返回文件流时,前端如何处理并成功下载流文件以及解决下载后打开显示不支持此文件格式

    文件(File)和流(Stream)是既有区别又有联系的两个概念。 文件 是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。       存储介质:文件是指在各种存储介质上(如硬盘、可移动磁盘、CD等)永久存储的数据        的有序集合,它是进行数

    2024年02月09日
    浏览(71)
  • KT148A语音芯片智能锁扩展语音地址以及如何支持大量小文件的打包

    智能锁的语音播放需求中,有很多需要多国语言合并在一起的需求 其中语音文件数多,并且每个语音文件小的特点 如果使用OTP的语音芯片,就很麻烦,因为用户不可烧录,调试也很繁琐 同时大容量的又很贵,所以使用KT148A-sop8的flash型语音芯片就是最优的解决方案 解决KT14

    2024年01月18日
    浏览(54)
  • 阿里云OSS-小程序文件直传(支持微信小程序、H5、PC端web使用)

    支持微信小程序、H5、PC端web使用,整套文件进行封装统一使用 开发背景:做类似发布朋友圈的功能需求,由于后端对发布功能只提供一个接口,文字、状态、文件上传统一一个接口上传,且对文件上传方面做的接口存在诸多问题(人已经整麻了),包括各种数据结构的转换

    2024年02月07日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包