主頁 > 後端開發 > 整理spring-web里支持的檔案以及對應的Content-Type

整理spring-web里支持的檔案以及對應的Content-Type

2023-06-18 07:48:31 後端開發

前言

最近在弄檔案上傳、下載、在線預覽時經常需要設定請求標頭或者回應標頭的Content-Type 屬性,所以研究了一下spring支持哪些Content-Type,通過研究MediaTypeFactory.getMediaType的原始碼,可以得知spring是將支持的Content-Type 維護在/org/springframework/http/mime.types檔案中,

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

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

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

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

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

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

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

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

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

通過上面查找檔案的路徑找到了org.springframework:spring-web包下http目錄中的mime.types檔案
請添加圖片描述

結果打開后居然發現 有多達1838個Content-Type,不過許多都是被注釋掉的,過濾掉被注釋的最終能被獲取出來的一共是982個,本著好記性不如爛筆頭的精神,我把這982個Content-Type已經它對應的檔案后綴,整理了一下,形成了下面的表格,也方便以后查閱,

mime.types檔案:
請添加圖片描述

?spring-web將mime.types檔案加載到這個map里
請添加圖片描述

spring-web里支持的檔案以及對應的Content-Type

檔案型別 MIME Type
ez application/andrew-inset
aw application/applixware
atom application/atom+xml
atomcat application/atomcat+xml
atomsvc application/atomsvc+xml
ccxml application/ccxml+xml
cdmia application/cdmi-capability
cdmic application/cdmi-container
cdmid application/cdmi-domain
cdmio application/cdmi-object
cdmiq application/cdmi-queue
cu application/cu-seeme
davmount application/davmount+xml
dbk application/docbook+xml
dssc application/dssc+der
xdssc application/dssc+xml
ecma application/ecmascript
emma application/emma+xml
epub application/epub+zip
exi application/exi
pfr application/font-tdpfr
woff application/font-woff
gml application/gml+xml
gpx application/gpx+xml
gxf application/gxf
stk application/hyperstudio
ink application/inkml+xml
inkml application/inkml+xml
ipfix application/ipfix
jar application/java-archive
ser application/java-serialized-object
class application/java-vm
js application/javascript
json application/json
jsonml application/jsonml+json
lostxml application/lost+xml
hqx application/mac-binhex40
cpt application/mac-compactpro
mads application/mads+xml
mrc application/marc
mrcx application/marcxml+xml
ma application/mathematica
nb application/mathematica
mb application/mathematica
mathml application/mathml+xml
mbox application/mbox
mscml application/mediaservercontrol+xml
metalink application/metalink+xml
meta4 application/metalink4+xml
mets application/mets+xml
mods application/mods+xml
m21 application/mp21
mp21 application/mp21
mp4s application/mp4
doc application/msword
dot application/msword
mxf application/mxf
bin application/octet-stream
dms application/octet-stream
lrf application/octet-stream
mar application/octet-stream
so application/octet-stream
dist application/octet-stream
distz application/octet-stream
pkg application/octet-stream
bpk application/octet-stream
dump application/octet-stream
elc application/octet-stream
deploy application/octet-stream
oda application/oda
opf application/oebps-package+xml
ogx application/ogg
omdoc application/omdoc+xml
onetoc application/onenote
onetoc2 application/onenote
onetmp application/onenote
onepkg application/onenote
oxps application/oxps
xer application/patch-ops-error+xml
pdf application/pdf
pgp application/pgp-encrypted
asc application/pgp-signature
sig application/pgp-signature
prf application/pics-rules
p10 application/pkcs10
p7m application/pkcs7-mime
p7c application/pkcs7-mime
p7s application/pkcs7-signature
p8 application/pkcs8
ac application/pkix-attr-cert
cer application/pkix-cert
crl application/pkix-crl
pkipath application/pkix-pkipath
pki application/pkixcmp
pls application/pls+xml
ai application/postscript
eps application/postscript
ps application/postscript
cww application/prs.cww
pskcxml application/pskc+xml
rdf application/rdf+xml
rif application/reginfo+xml
rnc application/relax-ng-compact-syntax
rl application/resource-lists+xml
rld application/resource-lists-diff+xml
rs application/rls-services+xml
gbr application/rpki-ghostbusters
mft application/rpki-manifest
roa application/rpki-roa
rsd application/rsd+xml
rss application/rss+xml
rtf application/rtf
sbml application/sbml+xml
scq application/scvp-cv-request
scs application/scvp-cv-response
spq application/scvp-vp-request
spp application/scvp-vp-response
sdp application/sdp
setpay application/set-payment-initiation
setreg application/set-registration-initiation
shf application/shf+xml
smi application/smil+xml
smil application/smil+xml
rq application/sparql-query
srx application/sparql-results+xml
gram application/srgs
grxml application/srgs+xml
sru application/sru+xml
ssdl application/ssdl+xml
ssml application/ssml+xml
tei application/tei+xml
teicorpus application/tei+xml
tfi application/thraud+xml
tsd application/timestamped-data
plb application/vnd.3gpp.pic-bw-large
psb application/vnd.3gpp.pic-bw-small
pvb application/vnd.3gpp.pic-bw-var
tcap application/vnd.3gpp2.tcap
pwn application/vnd.3m.post-it-notes
aso application/vnd.accpac.simply.aso
imp application/vnd.accpac.simply.imp
acu application/vnd.acucobol
atc application/vnd.acucorp
acutc application/vnd.acucorp
air application/vnd.adobe.air-application-installer-package+zip
fcdt application/vnd.adobe.formscentral.fcdt
fxp application/vnd.adobe.fxp
fxpl application/vnd.adobe.fxp
xdp application/vnd.adobe.xdp+xml
xfdf application/vnd.adobe.xfdf
ahead application/vnd.ahead.space
azf application/vnd.airzip.filesecure.azf
azs application/vnd.airzip.filesecure.azs
azw application/vnd.amazon.ebook
acc application/vnd.americandynamics.acc
ami application/vnd.amiga.ami
apk application/vnd.android.package-archive
cii application/vnd.anser-web-certificate-issue-initiation
fti application/vnd.anser-web-funds-transfer-initiation
atx application/vnd.antix.game-component
mpkg application/vnd.apple.installer+xml
m3u8 application/vnd.apple.mpegurl
swi application/vnd.aristanetworks.swi
iota application/vnd.astraea-software.iota
aep application/vnd.audiograph
mpm application/vnd.blueice.multipass
bmi application/vnd.bmi
rep application/vnd.businessobjects
cdxml application/vnd.chemdraw+xml
mmd application/vnd.chipnuts.karaoke-mmd
cdy application/vnd.cinderella
cla application/vnd.claymore
rp9 application/vnd.cloanto.rp9
c4g application/vnd.clonk.c4group
c4d application/vnd.clonk.c4group
c4f application/vnd.clonk.c4group
c4p application/vnd.clonk.c4group
c4u application/vnd.clonk.c4group
c11amc application/vnd.cluetrust.cartomobile-config
c11amz application/vnd.cluetrust.cartomobile-config-pkg
csp application/vnd.commonspace
cdbcmsg application/vnd.contact.cmsg
cmc application/vnd.cosmocaller
clkx application/vnd.crick.clicker
clkk application/vnd.crick.clicker.keyboard
clkp application/vnd.crick.clicker.palette
clkt application/vnd.crick.clicker.template
clkw application/vnd.crick.clicker.wordbank
wbs application/vnd.criticaltools.wbs+xml
pml application/vnd.ctc-posml
ppd application/vnd.cups-ppd
car application/vnd.curl.car
pcurl application/vnd.curl.pcurl
dart application/vnd.dart
rdz application/vnd.data-vision.rdz
uvf application/vnd.dece.data
uvvf application/vnd.dece.data
uvd application/vnd.dece.data
uvvd application/vnd.dece.data
uvt application/vnd.dece.ttml+xml
uvvt application/vnd.dece.ttml+xml
uvx application/vnd.dece.unspecified
uvvx application/vnd.dece.unspecified
uvz application/vnd.dece.zip
uvvz application/vnd.dece.zip
fe_launch application/vnd.denovo.fcselayout-link
dna application/vnd.dna
mlp application/vnd.dolby.mlp
dpg application/vnd.dpgraph
dfac application/vnd.dreamfactory
kpxx application/vnd.ds-keypoint
ait application/vnd.dvb.ait
svc application/vnd.dvb.service
geo application/vnd.dynageo
mag application/vnd.ecowin.chart
nml application/vnd.enliven
esf application/vnd.epson.esf
msf application/vnd.epson.msf
qam application/vnd.epson.quickanime
slt application/vnd.epson.salt
ssf application/vnd.epson.ssf
es3 application/vnd.eszigno3+xml
et3 application/vnd.eszigno3+xml
ez2 application/vnd.ezpix-album
ez3 application/vnd.ezpix-package
fdf application/vnd.fdf
mseed application/vnd.fdsn.mseed
seed application/vnd.fdsn.seed
dataless application/vnd.fdsn.seed
gph application/vnd.flographit
ftc application/vnd.fluxtime.clip
fm application/vnd.framemaker
frame application/vnd.framemaker
maker application/vnd.framemaker
book application/vnd.framemaker
fnc application/vnd.frogans.fnc
ltf application/vnd.frogans.ltf
fsc application/vnd.fsc.weblaunch
oas application/vnd.fujitsu.oasys
oa2 application/vnd.fujitsu.oasys2
oa3 application/vnd.fujitsu.oasys3
fg5 application/vnd.fujitsu.oasysgp
bh2 application/vnd.fujitsu.oasysprs
ddd application/vnd.fujixerox.ddd
xdw application/vnd.fujixerox.docuworks
xbd application/vnd.fujixerox.docuworks.binder
fzs application/vnd.fuzzysheet
txd application/vnd.genomatix.tuxedo
ggb application/vnd.geogebra.file
ggt application/vnd.geogebra.tool
gex application/vnd.geometry-explorer
gre application/vnd.geometry-explorer
gxt application/vnd.geonext
g2w application/vnd.geoplan
g3w application/vnd.geospace
gmx application/vnd.gmx
kml application/vnd.google-earth.kml+xml
kmz application/vnd.google-earth.kmz
gqf application/vnd.grafeq
gqs application/vnd.grafeq
gac application/vnd.groove-account
ghf application/vnd.groove-help
gim application/vnd.groove-identity-message
grv application/vnd.groove-injector
gtm application/vnd.groove-tool-message
tpl application/vnd.groove-tool-template
vcg application/vnd.groove-vcard
hal application/vnd.hal+xml
zmm application/vnd.handheld-entertainment+xml
hbci application/vnd.hbci
les application/vnd.hhe.lesson-player
hpgl application/vnd.hp-hpgl
hpid application/vnd.hp-hpid
hps application/vnd.hp-hps
jlt application/vnd.hp-jlyt
pcl application/vnd.hp-pcl
pclxl application/vnd.hp-pclxl
sfd-hdstx application/vnd.hydrostatix.sof-data
mpy application/vnd.ibm.minipay
afp application/vnd.ibm.modcap
listafp application/vnd.ibm.modcap
list3820 application/vnd.ibm.modcap
irm application/vnd.ibm.rights-management
sc application/vnd.ibm.secure-container
icc application/vnd.iccprofile
icm application/vnd.iccprofile
igl application/vnd.igloader
ivp application/vnd.immervision-ivp
ivu application/vnd.immervision-ivu
igm application/vnd.insors.igm
xpw application/vnd.intercon.formnet
xpx application/vnd.intercon.formnet
i2g application/vnd.intergeo
qbo application/vnd.intu.qbo
qfx application/vnd.intu.qfx
rcprofile application/vnd.ipunplugged.rcprofile
irp application/vnd.irepository.package+xml
xpr application/vnd.is-xpr
fcs application/vnd.isac.fcs
jam application/vnd.jam
rms application/vnd.jcp.javame.midlet-rms
jisp application/vnd.jisp
joda application/vnd.joost.joda-archive
ktz application/vnd.kahootz
ktr application/vnd.kahootz
karbon application/vnd.kde.karbon
chrt application/vnd.kde.kchart
kfo application/vnd.kde.kformula
flw application/vnd.kde.kivio
kon application/vnd.kde.kontour
kpr application/vnd.kde.kpresenter
kpt application/vnd.kde.kpresenter
ksp application/vnd.kde.kspread
kwd application/vnd.kde.kword
kwt application/vnd.kde.kword
htke application/vnd.kenameaapp
kia application/vnd.kidspiration
kne application/vnd.kinar
knp application/vnd.kinar
skp application/vnd.koan
skd application/vnd.koan
skt application/vnd.koan
skm application/vnd.koan
sse application/vnd.kodak-descriptor
lasxml application/vnd.las.las+xml
lbd application/vnd.llamagraphics.life-balance.desktop
lbe application/vnd.llamagraphics.life-balance.exchange+xml
123 application/vnd.lotus-1-2-3
apr application/vnd.lotus-approach
pre application/vnd.lotus-freelance
nsf application/vnd.lotus-notes
org application/vnd.lotus-organizer
scm application/vnd.lotus-screencam
lwp application/vnd.lotus-wordpro
portpkg application/vnd.macports.portpkg
mcd application/vnd.mcd
mc1 application/vnd.medcalcdata
cdkey application/vnd.mediastation.cdkey
mwf application/vnd.mfer
mfm application/vnd.mfmp
flo application/vnd.micrografx.flo
igx application/vnd.micrografx.igx
mif application/vnd.mif
daf application/vnd.mobius.daf
dis application/vnd.mobius.dis
mbk application/vnd.mobius.mbk
mqy application/vnd.mobius.mqy
msl application/vnd.mobius.msl
plc application/vnd.mobius.plc
txf application/vnd.mobius.txf
mpn application/vnd.mophun.application
mpc application/vnd.mophun.certificate
xul application/vnd.mozilla.xul+xml
cil application/vnd.ms-artgalry
cab application/vnd.ms-cab-compressed
xls application/vnd.ms-excel
xlm application/vnd.ms-excel
xla application/vnd.ms-excel
xlc application/vnd.ms-excel
xlt application/vnd.ms-excel
xlw application/vnd.ms-excel
xlam application/vnd.ms-excel.addin.macroenabled.12
xlsb application/vnd.ms-excel.sheet.binary.macroenabled.12
xlsm application/vnd.ms-excel.sheet.macroenabled.12
xltm application/vnd.ms-excel.template.macroenabled.12
eot application/vnd.ms-fontobject
chm application/vnd.ms-htmlhelp
ims application/vnd.ms-ims
lrm application/vnd.ms-lrm
thmx application/vnd.ms-officetheme
cat application/vnd.ms-pki.seccat
stl application/vnd.ms-pki.stl
ppt application/vnd.ms-powerpoint
pps application/vnd.ms-powerpoint
pot application/vnd.ms-powerpoint
ppam application/vnd.ms-powerpoint.addin.macroenabled.12
pptm application/vnd.ms-powerpoint.presentation.macroenabled.12
sldm application/vnd.ms-powerpoint.slide.macroenabled.12
ppsm application/vnd.ms-powerpoint.slideshow.macroenabled.12
potm application/vnd.ms-powerpoint.template.macroenabled.12
mpp application/vnd.ms-project
mpt application/vnd.ms-project
docm application/vnd.ms-word.document.macroenabled.12
dotm application/vnd.ms-word.template.macroenabled.12
wps application/vnd.ms-works
wks application/vnd.ms-works
wcm application/vnd.ms-works
wdb application/vnd.ms-works
wpl application/vnd.ms-wpl
xps application/vnd.ms-xpsdocument
mseq application/vnd.mseq
mus application/vnd.musician
msty application/vnd.muvee.style
taglet application/vnd.mynfc
nlu application/vnd.neurolanguage.nlu
ntf application/vnd.nitf
nitf application/vnd.nitf
nnd application/vnd.noblenet-directory
nns application/vnd.noblenet-sealer
nnw application/vnd.noblenet-web
ngdat application/vnd.nokia.n-gage.data
n-gage application/vnd.nokia.n-gage.symbian.install
rpst application/vnd.nokia.radio-preset
rpss application/vnd.nokia.radio-presets
edm application/vnd.novadigm.edm
edx application/vnd.novadigm.edx
ext application/vnd.novadigm.ext
odc application/vnd.oasis.opendocument.chart
otc application/vnd.oasis.opendocument.chart-template
odb application/vnd.oasis.opendocument.database
odf application/vnd.oasis.opendocument.formula
odft application/vnd.oasis.opendocument.formula-template
odg application/vnd.oasis.opendocument.graphics
otg application/vnd.oasis.opendocument.graphics-template
odi application/vnd.oasis.opendocument.image
oti application/vnd.oasis.opendocument.image-template
odp application/vnd.oasis.opendocument.presentation
otp application/vnd.oasis.opendocument.presentation-template
ods application/vnd.oasis.opendocument.spreadsheet
ots application/vnd.oasis.opendocument.spreadsheet-template
odt application/vnd.oasis.opendocument.text
odm application/vnd.oasis.opendocument.text-master
ott application/vnd.oasis.opendocument.text-template
oth application/vnd.oasis.opendocument.text-web
xo application/vnd.olpc-sugar
dd2 application/vnd.oma.dd2+xml
oxt application/vnd.openofficeorg.extension
pptx application/vnd.openxmlformats-officedocument.presentationml.presentation
sldx application/vnd.openxmlformats-officedocument.presentationml.slide
ppsx application/vnd.openxmlformats-officedocument.presentationml.slideshow
potx application/vnd.openxmlformats-officedocument.presentationml.template
xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
xltx application/vnd.openxmlformats-officedocument.spreadsheetml.template
docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
dotx application/vnd.openxmlformats-officedocument.wordprocessingml.template
mgp application/vnd.osgeo.mapguide.package
dp application/vnd.osgi.dp
esa application/vnd.osgi.subsystem
pdb application/vnd.palm
pqa application/vnd.palm
oprc application/vnd.palm
paw application/vnd.pawaafile
str application/vnd.pg.format
ei6 application/vnd.pg.osasli
efif application/vnd.picsel
wg application/vnd.pmi.widget
plf application/vnd.pocketlearn
pbd application/vnd.powerbuilder6
box application/vnd.previewsystems.box
mgz application/vnd.proteus.magazine
qps application/vnd.publishare-delta-tree
ptid application/vnd.pvi.ptid1
qxd application/vnd.quark.quarkxpress
qxt application/vnd.quark.quarkxpress
qwd application/vnd.quark.quarkxpress
qwt application/vnd.quark.quarkxpress
qxl application/vnd.quark.quarkxpress
qxb application/vnd.quark.quarkxpress
bed application/vnd.realvnc.bed
mxl application/vnd.recordare.musicxml
musicxml application/vnd.recordare.musicxml+xml
cryptonote application/vnd.rig.cryptonote
cod application/vnd.rim.cod
rm application/vnd.rn-realmedia
rmvb application/vnd.rn-realmedia-vbr
link66 application/vnd.route66.link66+xml
st application/vnd.sailingtracker.track
see application/vnd.seemail
sema application/vnd.sema
semd application/vnd.semd
semf application/vnd.semf
ifm application/vnd.shana.informed.formdata
itp application/vnd.shana.informed.formtemplate
iif application/vnd.shana.informed.interchange
ipk application/vnd.shana.informed.package
twd application/vnd.simtech-mindmapper
twds application/vnd.simtech-mindmapper
mmf application/vnd.smaf
teacher application/vnd.smart.teacher
sdkm application/vnd.solent.sdkm+xml
sdkd application/vnd.solent.sdkm+xml
dxp application/vnd.spotfire.dxp
sfs application/vnd.spotfire.sfs
sdc application/vnd.stardivision.calc
sda application/vnd.stardivision.draw
sdd application/vnd.stardivision.impress
smf application/vnd.stardivision.math
sdw application/vnd.stardivision.writer
vor application/vnd.stardivision.writer
sgl application/vnd.stardivision.writer-global
smzip application/vnd.stepmania.package
sm application/vnd.stepmania.stepchart
sxc application/vnd.sun.xml.calc
stc application/vnd.sun.xml.calc.template
sxd application/vnd.sun.xml.draw
std application/vnd.sun.xml.draw.template
sxi application/vnd.sun.xml.impress
sti application/vnd.sun.xml.impress.template
sxm application/vnd.sun.xml.math
sxw application/vnd.sun.xml.writer
sxg application/vnd.sun.xml.writer.global
stw application/vnd.sun.xml.writer.template
sus application/vnd.sus-calendar
susp application/vnd.sus-calendar
svd application/vnd.svd
sis application/vnd.symbian.install
sisx application/vnd.symbian.install
xsm application/vnd.syncml+xml
bdm application/vnd.syncml.dm+wbxml
xdm application/vnd.syncml.dm+xml
tao application/vnd.tao.intent-module-archive
pcap application/vnd.tcpdump.pcap
cap application/vnd.tcpdump.pcap
dmp application/vnd.tcpdump.pcap
tmo application/vnd.tmobile-livetv
tpt application/vnd.trid.tpt
mxs application/vnd.triscape.mxs
tra application/vnd.trueapp
ufd application/vnd.ufdl
ufdl application/vnd.ufdl
utz application/vnd.uiq.theme
umj application/vnd.umajin
unityweb application/vnd.unity
uoml application/vnd.uoml+xml
vcx application/vnd.vcx
vsd application/vnd.visio
vst application/vnd.visio
vss application/vnd.visio
vsw application/vnd.visio
vis application/vnd.visionary
vsf application/vnd.vsf
wbxml application/vnd.wap.wbxml
wmlc application/vnd.wap.wmlc
wmlsc application/vnd.wap.wmlscriptc
wtb application/vnd.webturbo
nbp application/vnd.wolfram.player
wpd application/vnd.wordperfect
wqd application/vnd.wqd
stf application/vnd.wt.stf
xar application/vnd.xara
xfdl application/vnd.xfdl
hvd application/vnd.yamaha.hv-dic
hvs application/vnd.yamaha.hv-script
hvp application/vnd.yamaha.hv-voice
osf application/vnd.yamaha.openscoreformat
osfpvg application/vnd.yamaha.openscoreformat.osfpvg+xml
saf application/vnd.yamaha.smaf-audio
spf application/vnd.yamaha.smaf-phrase
cmp application/vnd.yellowriver-custom-menu
zir application/vnd.zul
zirz application/vnd.zul
zaz application/vnd.zzazz.deck+xml
vxml application/voicexml+xml
wgt application/widget
hlp application/winhlp
wsdl application/wsdl+xml
wspolicy application/wspolicy+xml
7z application/x-7z-compressed
abw application/x-abiword
ace application/x-ace-compressed
dmg application/x-apple-diskimage
aab application/x-authorware-bin
x32 application/x-authorware-bin
u32 application/x-authorware-bin
vox application/x-authorware-bin
aam application/x-authorware-map
aas application/x-authorware-seg
bcpio application/x-bcpio
torrent application/x-bittorrent
blb application/x-blorb
blorb application/x-blorb
bz application/x-bzip
bz2 application/x-bzip2
boz application/x-bzip2
cbr application/x-cbr
cba application/x-cbr
cbt application/x-cbr
cbz application/x-cbr
cb7 application/x-cbr
vcd application/x-cdlink
cfs application/x-cfs-compressed
chat application/x-chat
pgn application/x-chess-pgn
nsc application/x-conference
cpio application/x-cpio
csh application/x-csh
deb application/x-debian-package
udeb application/x-debian-package
dgc application/x-dgc-compressed
dir application/x-director
dcr application/x-director
dxr application/x-director
cst application/x-director
cct application/x-director
cxt application/x-director
w3d application/x-director
fgd application/x-director
swa application/x-director
wad application/x-doom
ncx application/x-dtbncx+xml
dtb application/x-dtbook+xml
res application/x-dtbresource+xml
dvi application/x-dvi
evy application/x-envoy
eva application/x-eva
bdf application/x-font-bdf
gsf application/x-font-ghostscript
psf application/x-font-linux-psf
otf application/x-font-otf
pcf application/x-font-pcf
snf application/x-font-snf
ttf application/x-font-ttf
ttc application/x-font-ttf
pfa application/x-font-type1
pfb application/x-font-type1
pfm application/x-font-type1
afm application/x-font-type1
arc application/x-freearc
spl application/x-futuresplash
gca application/x-gca-compressed
ulx application/x-glulx
gnumeric application/x-gnumeric
gramps application/x-gramps-xml
gtar application/x-gtar
hdf application/x-hdf
install application/x-install-instructions
iso application/x-iso9660-image
jnlp application/x-java-jnlp-file
latex application/x-latex
lzh application/x-lzh-compressed
lha application/x-lzh-compressed
mie application/x-mie
prc application/x-mobipocket-ebook
mobi application/x-mobipocket-ebook
application application/x-ms-application
lnk application/x-ms-shortcut
wmd application/x-ms-wmd
wmz application/x-ms-wmz
xbap application/x-ms-xbap
mdb application/x-msaccess
obd application/x-msbinder
crd application/x-mscardfile
clp application/x-msclip
exe application/x-msdownload
dll application/x-msdownload
com application/x-msdownload
bat application/x-msdownload
msi application/x-msdownload
mvb application/x-msmediaview
m13 application/x-msmediaview
m14 application/x-msmediaview
wmf application/x-msmetafile
emf application/x-msmetafile
emz application/x-msmetafile
mny application/x-msmoney
pub application/x-mspublisher
scd application/x-msschedule
trm application/x-msterminal
wri application/x-mswrite
nc application/x-netcdf
cdf application/x-netcdf
nzb application/x-nzb
p12 application/x-pkcs12
pfx application/x-pkcs12
p7b application/x-pkcs7-certificates
spc application/x-pkcs7-certificates
p7r application/x-pkcs7-certreqresp
rar application/x-rar-compressed
ris application/x-research-info-systems
sh application/x-sh
shar application/x-shar
swf application/x-shockwave-flash
xap application/x-silverlight-app
sql application/x-sql
sit application/x-stuffit
sitx application/x-stuffitx
srt application/x-subrip
sv4cpio application/x-sv4cpio
sv4crc application/x-sv4crc
t3 application/x-t3vm-image
gam application/x-tads
tar application/x-tar
tcl application/x-tcl
tex application/x-tex
tfm application/x-tex-tfm
texinfo application/x-texinfo
texi application/x-texinfo
obj application/x-tgif
ustar application/x-ustar
src application/x-wais-source
der application/x-x509-ca-cert
crt application/x-x509-ca-cert
fig application/x-xfig
xlf application/x-xliff+xml
xpi application/x-xpinstall
xz application/x-xz
z1 application/x-zmachine
z2 application/x-zmachine
z3 application/x-zmachine
z4 application/x-zmachine
z5 application/x-zmachine
z6 application/x-zmachine
z7 application/x-zmachine
z8 application/x-zmachine
xaml application/xaml+xml
xdf application/xcap-diff+xml
xenc application/xenc+xml
xhtml application/xhtml+xml
xht application/xhtml+xml
xml application/xml
xsl application/xml
dtd application/xml-dtd
xop application/xop+xml
xpl application/xproc+xml
xslt application/xslt+xml
xspf application/xspf+xml
mxml application/xv+xml
xhvml application/xv+xml
xvml application/xv+xml
xvm application/xv+xml
yang application/yang
yin application/yin+xml
zip application/zip
adp audio/adpcm
au audio/basic
snd audio/basic
mid audio/midi
midi audio/midi
kar audio/midi
rmi audio/midi
m4a audio/mp4
mp4a audio/mp4
mpga audio/mpeg
mp2 audio/mpeg
mp2a audio/mpeg
mp3 audio/mpeg
m2a audio/mpeg
m3a audio/mpeg
oga audio/ogg
ogg audio/ogg
spx audio/ogg
s3m audio/s3m
sil audio/silk
uva audio/vnd.dece.audio
uvva audio/vnd.dece.audio
eol audio/vnd.digital-winds
dra audio/vnd.dra
dts audio/vnd.dts
dtshd audio/vnd.dts.hd
lvp audio/vnd.lucent.voice
pya audio/vnd.ms-playready.media.pya
ecelp4800 audio/vnd.nuera.ecelp4800
ecelp7470 audio/vnd.nuera.ecelp7470
ecelp9600 audio/vnd.nuera.ecelp9600
rip audio/vnd.rip
weba audio/webm
aac audio/x-aac
aif audio/x-aiff
aiff audio/x-aiff
aifc audio/x-aiff
caf audio/x-caf
flac audio/x-flac
mka audio/x-matroska
m3u audio/x-mpegurl
wax audio/x-ms-wax
wma audio/x-ms-wma
ram audio/x-pn-realaudio
ra audio/x-pn-realaudio
rmp audio/x-pn-realaudio-plugin
wav audio/x-wav
xm audio/xm
cdx chemical/x-cdx
cif chemical/x-cif
cmdf chemical/x-cmdf
cml chemical/x-cml
csml chemical/x-csml
xyz chemical/x-xyz
bmp image/bmp
cgm image/cgm
g3 image/g3fax
gif image/gif
ief image/ief
jpeg image/jpeg
jpg image/jpeg
jpe image/jpeg
ktx image/ktx
png image/png
btif image/prs.btif
sgi image/sgi
svg image/svg+xml
svgz image/svg+xml
tiff image/tiff
tif image/tiff
psd image/vnd.adobe.photoshop
uvi image/vnd.dece.graphic
uvvi image/vnd.dece.graphic
uvg image/vnd.dece.graphic
uvvg image/vnd.dece.graphic
djvu image/vnd.djvu
djv image/vnd.djvu
sub image/vnd.dvb.subtitle
dwg image/vnd.dwg
dxf image/vnd.dxf
fbs image/vnd.fastbidsheet
fpx image/vnd.fpx
fst image/vnd.fst
mmr image/vnd.fujixerox.edmics-mmr
rlc image/vnd.fujixerox.edmics-rlc
mdi image/vnd.ms-modi
wdp image/vnd.ms-photo
npx image/vnd.net-fpx
wbmp image/vnd.wap.wbmp
xif image/vnd.xiff
webp image/webp
3ds image/x-3ds
ras image/x-cmu-raster
cmx image/x-cmx
fh image/x-freehand
fhc image/x-freehand
fh4 image/x-freehand
fh5 image/x-freehand
fh7 image/x-freehand
ico image/x-icon
sid image/x-mrsid-image
pcx image/x-pcx
pic image/x-pict
pct image/x-pict
pnm image/x-portable-anymap
pbm image/x-portable-bitmap
pgm image/x-portable-graymap
ppm image/x-portable-pixmap
rgb image/x-rgb
tga image/x-tga
xbm image/x-xbitmap
xpm image/x-xpixmap
xwd image/x-xwindowdump
eml message/rfc822
mime message/rfc822
igs model/iges
iges model/iges
msh model/mesh
mesh model/mesh
silo model/mesh
dae model/vnd.collada+xml
dwf model/vnd.dwf
gdl model/vnd.gdl
gtw model/vnd.gtw
mts model/vnd.mts
vtu model/vnd.vtu
wrl model/vrml
vrml model/vrml
x3db model/x3d+binary
x3dbz model/x3d+binary
x3dv model/x3d+vrml
x3dvz model/x3d+vrml
x3d model/x3d+xml
x3dz model/x3d+xml
appcache text/cache-manifest
ics text/calendar
ifb text/calendar
css text/css
csv text/csv
html text/html
htm text/html
n3 text/n3
txt text/plain
text text/plain
conf text/plain
def text/plain
list text/plain
log text/plain
in text/plain
dsc text/prs.lines.tag
rtx text/richtext
sgml text/sgml
sgm text/sgml
tsv text/tab-separated-values
t text/troff
tr text/troff
roff text/troff
man text/troff
me text/troff
ms text/troff
ttl text/turtle
uri text/uri-list
uris text/uri-list
urls text/uri-list
vcard text/vcard
curl text/vnd.curl
dcurl text/vnd.curl.dcurl
mcurl text/vnd.curl.mcurl
scurl text/vnd.curl.scurl
fly text/vnd.fly
flx text/vnd.fmi.flexstor
gv text/vnd.graphviz
3dml text/vnd.in3d.3dml
spot text/vnd.in3d.spot
jad text/vnd.sun.j2me.app-descriptor
wml text/vnd.wap.wml
wmls text/vnd.wap.wmlscript
s text/x-asm
asm text/x-asm
c text/x-c
cc text/x-c
cxx text/x-c
cpp text/x-c
h text/x-c
hh text/x-c
dic text/x-c
f text/x-fortran
for text/x-fortran
f77 text/x-fortran
f90 text/x-fortran
java text/x-java-source
nfo text/x-nfo
opml text/x-opml
p text/x-pascal
pas text/x-pascal
etx text/x-setext
sfv text/x-sfv
uu text/x-uuencode
vcs text/x-vcalendar
vcf text/x-vcard
3gp video/3gpp
3g2 video/3gpp2
h261 video/h261
h263 video/h263
h264 video/h264
jpgv video/jpeg
jpm video/jpm
jpgm video/jpm
mj2 video/mj2
mjp2 video/mj2
mp4 video/mp4
mp4v video/mp4
mpg4 video/mp4
mpeg video/mpeg
mpg video/mpeg
mpe video/mpeg
m1v video/mpeg
m2v video/mpeg
ogv video/ogg
qt video/quicktime
mov video/quicktime
uvh video/vnd.dece.hd
uvvh video/vnd.dece.hd
uvm video/vnd.dece.mobile
uvvm video/vnd.dece.mobile
uvp video/vnd.dece.pd
uvvp video/vnd.dece.pd
uvs video/vnd.dece.sd
uvvs video/vnd.dece.sd
uvv video/vnd.dece.video
uvvv video/vnd.dece.video
dvb video/vnd.dvb.file
fvt video/vnd.fvt
mxu video/vnd.mpegurl
m4u video/vnd.mpegurl
pyv video/vnd.ms-playready.media.pyv
uvu video/vnd.uvvu.mp4
uvvu video/vnd.uvvu.mp4
viv video/vnd.vivo
webm video/webm
f4v video/x-f4v
fli video/x-fli
flv video/x-flv
m4v video/x-m4v
mkv video/x-matroska
mk3d video/x-matroska
mks video/x-matroska
mng video/x-mng
asf video/x-ms-asf
asx video/x-ms-asf
vob video/x-ms-vob
wm video/x-ms-wm
wmv video/x-ms-wmv
wmx video/x-ms-wmx
wvx video/x-ms-wvx
avi video/x-msvideo
movie video/x-sgi-movie
smv video/x-smv
ice x-conference/x-cooltalk

如何獲取檔案的Content-Type

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);

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/555447.html

標籤:其他

上一篇:Go 語言之在 gin 框架中使用 zap 日志庫

下一篇:返回列表

標籤雲
其他(161188) Python(38240) JavaScript(25504) Java(18245) C(15237) 區塊鏈(8271) C#(7972) AI(7469) 爪哇(7425) MySQL(7256) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5875) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4601) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2436) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1984) HtmlCss(1968) 功能(1967) Web開發(1951) C++(1941) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • 整理spring-web里支持的檔案以及對應的Content-Type

    最近在弄檔案上傳、下載、在線預覽時經常需要設定請求標頭或者回應標頭的Content-Type 屬性。所以研究了一下spring支持哪些Content-Type,通過研究MediaTypeFactory.getMediaType的原始碼,可以得知spring是將支持的Content-Type 維護在/o... ......

    uj5u.com 2023-06-18 07:48:31 more
  • Go 語言之在 gin 框架中使用 zap 日志庫

    # Go 語言之在 gin 框架中使用 zap 日志庫 ### gin 框架默認使用的是自帶的日志 #### `gin.Default()`的原始碼 Logger(), Recovery() ```go func Default() *Engine { debugPrintWARNINGDefault ......

    uj5u.com 2023-06-18 07:48:21 more
  • Nginx 學習筆記

    ## 概述 Nginx 是一個高性能的 HTTP 和反向代理服務器,特點是占用記憶體少,并發能力強 #### 1. 正向代理 如果把局域網外的 Internet 想象成一個巨大的資源庫,則局域網中的客戶端要訪問 Internet,需要通過代理服務器來訪問,這種訪問就稱為正向代理 ![](https:/ ......

    uj5u.com 2023-06-18 07:48:13 more
  • Python潮流周刊#7:我討厭用 asyncio

    你好,我是貓哥。這里記錄每周值得分享的 Python 及通用技術內容,部分為英文,已在小標題注明。(標題取自其中一則分享,不代表全部內容都是該主題,特此宣告。) 首發于我的博客:[https://pythoncat.top/posts/2023-06-17-weekly7](https://pyth ......

    uj5u.com 2023-06-18 07:47:39 more
  • Scala面向物件

    # 類和物件 **組成結構** ? 建構式: 在創建物件的時候給屬性賦值 ? 成員變數: ? 成員方法(函式) ? 區域變數 ? 代碼塊 ## 構造器 每個類都有一個主構造器,這個構造器和類定義"交織"在一起類名后面的內容就是主構造器,如果引數串列為空的話,()可以省略 scala的類有且僅有一個 ......

    uj5u.com 2023-06-18 07:42:11 more
  • Django學習筆記

    ## 1.常用命令 `創建專案:django-admin startproject 專案名` `創建APP(進入工程目錄):python manage.py startapp 網站名` `創建庫表(進入工程目錄):python manage.py makemigrations` `執行庫表建立(進入 ......

    uj5u.com 2023-06-18 07:40:09 more
  • Go 語言之自定義 zap 日志

    # Go 語言之自定義 zap 日志 [zap 日志](https://github.com/uber-go/zap):https://github.com/uber-go/zap ## 一、日志寫入檔案 - `zap.NewProduction`、`zap.NewDevelopment` 是預設配 ......

    uj5u.com 2023-06-18 07:40:00 more
  • Spring Boot實作高質量的CRUD-5

    (續前文) ## 9、Service實作類代碼示例 ? ? 以用戶管理模塊為例,展示Service實作類代碼。用戶管理的Service實作類為UserManServiceImpl。?UserManServiceImpl除了沒有deleteItems方法外,具備CRUD的其它常規方法。實際上?User ......

    uj5u.com 2023-06-18 07:39:53 more
  • ?任務編排工具在之家業務系統中應用探究

    本文主要介紹在之家廣告業務系統中運用任務編排治理工具的場景及其可以解決的問題,講解任務編排框架的核心要點,以及向大家演示一個任務編排框架的基本結構,讓大家對任務編排工具增強業務開發效率,提高研發質量有更深刻的理解。 ......

    uj5u.com 2023-06-18 07:39:37 more
  • Go 語言之 zap 日志庫簡單使用

    # Go 語言之 zap 日志庫簡單使用 ## 默認的 Go log log:https://pkg.go.dev/log ```go package main import ( "log" "os" ) func init() { log.SetPrefix("LOG: ") // 設定前綴 f, ......

    uj5u.com 2023-06-18 07:39:24 more