文件后缀转 content-type 文件扩展名和对应的 MIME 类型

文件后缀转 content-type


import org.apache.logging.log4j.util.Strings;

import java.util.EnumSet;

public enum MimeTypeEnum {
    // 添加更多的文件扩展名和对应的 MIME 类型
    UNKNOWN("*", "application/octet-stream"),
    _001(".001", "application/x-001"),
    _301(".301", "application/x-301"),
    _323(".323", "text/h323"),
    _906(".906", "application/x-906"),
    _907(".907", "drawing/907"),
    _A11(".a11", "application/x-a11"),
    _ACP(".acp", "audio/x-mei-aac"),
    _AI(".ai", "application/postscript"),
    _AIF(".aif", "audio/aiff"),
    _AIFC(".aifc", "audio/aiff"),
    _AIFF(".aiff", "audio/aiff"),
    _ANV(".anv", "application/x-anv"),
    _ASA(".asa", "text/asa"),
    _ASF(".asf", "video/x-ms-asf"),
    _ASP(".asp", "text/asp"),
    _ASX(".asx", "video/x-ms-asf"),
    _AU(".au", "audio/basic"),
    _AVI(".avi", "video/avi"),
    _AWF(".awf", "application/vnd.adobe.workflow"),
    _BIZ(".biz", "text/xml"),
    _BMP(".bmp", "application/x-bmp"),
    _BOT(".bot", "application/x-bot"),
    _C4T(".c4t", "application/x-c4t"),
    _C90(".c90", "application/x-c90"),
    _CAL(".cal", "application/x-cals"),
    _CAT(".cat", "application/s-pki.seccat"),
    _CDF(".cdf", "application/x-netcdf"),
    _CDR(".cdr", "application/x-cdr"),
    _CEL(".cel", "application/x-cel"),
    _CER(".cer", "application/x-x509-ca-cert"),
    _CG4(".cg4", "application/x-g4"),
    _CGM(".cgm", "application/x-cgm"),
    _CIT(".cit", "application/x-cit"),
    _CLASS(".class", "java/*"),
    _CML(".cml", "text/xml"),
    _CMP(".cmp", "application/x-cmp"),
    _CMX(".cmx", "application/x-cmx"),
    _COT(".cot", "application/x-cot"),
    _CRL(".crl", "application/pkix-crl"),
    _CRT(".crt", "application/x-x509-ca-cert"),
    _CSI(".csi", "application/x-csi"),
    _CSS(".css", "text/css"),
    _CUT(".cut", "application/x-cut"),
    _DBF(".dbf", "application/x-dbf"),
    _DBM(".dbm", "application/x-dbm"),
    _DBX(".dbx", "application/x-dbx"),
    _DCD(".dcd", "text/xml"),
    _DCX(".dcx", "application/x-dcx"),
    _DER(".der", "application/x-x509-ca-cert"),
    _DGN(".dgn", "application/x-dgn"),
    _DIB(".dib", "application/x-dib"),
    _DLL(".dll", "application/x-msdownload"),
    _DOC(".doc", "application/msword"),
    _DOT(".dot", "application/msword"),
    _DRW(".drw", "application/x-drw"),
    _DTD(".dtd", "text/xml"),
    _DWF(".dwf", "Model/vnd.dwf"),
    _DWG(".dwg", "application/x-dwg"),
    _DXB(".dxb", "application/x-dxb"),
    _DXF(".dxf", "application/x-dxf"),
    _EDN(".edn", "application/vnd.adobe.edn"),
    _EMF(".emf", "application/x-emf"),
    _EML(".eml", "message/rfc822"),
    _ENT(".ent", "text/xml"),
    _EPI(".epi", "application/x-epi"),
    _EPS(".eps", "application/x-ps"),
    _ETD(".etd", "application/x-ebx"),
    _EXE(".exe", "application/x-msdownload"),
    _FAX(".fax", "image/fax"),
    _FDF(".fdf", "application/vnd.fdf"),
    _FIF(".fif", "application/fractals"),
    _FO(".fo", "text/xml"),
    _FRM(".frm", "application/x-frm"),
    _G4(".g4", "application/x-g4"),
    _GBR(".gbr", "application/x-gbr"),
    _GCD(".gcd", "application/x-gcd"),
    _GIF(".gif", "image/gif"),
    _GL2(".gl2", "application/x-gl2"),
    _GP4(".gp4", "application/x-gp4"),
    _HGL(".hgl", "application/x-hgl"),
    _HMR(".hmr", "application/x-hmr"),
    _HPG(".hpg", "application/x-hpgl"),
    _HPL(".hpl", "application/x-hpl"),
    _HQX(".hqx", "application/mac-binhex40"),
    _HRF(".hrf", "application/x-hrf"),
    _HTA(".hta", "application/hta"),
    _HTC(".htc", "text/x-component"),
    _HTM(".htm", "text/html"),
    _HTML(".html", "text/html"),
    _HTT(".htt", "text/webviewhtml"),
    _HTX(".htx", "text/html"),
    _ICB(".icb", "application/x-icb"),
    _ICO(".ico", "image/x-icon"),
    _IFF(".iff", "application/x-iff"),
    _IG4(".ig4", "application/x-g4"),
    _IGS(".igs", "application/x-igs"),
    _III(".iii", "application/x-iphone"),
    _IMG(".img", "application/x-img"),
    _INS(".ins", "application/x-internet-signup"),
    _ISP(".isp", "application/x-internet-signup"),
    _IVF(".IVF", "video/x-ivf"),
    _JAVA(".java", "java/*"),
    _JFIF(".jfif", "image/jpeg"),
    _JPE(".jpe", "image/jpeg"),
    _JPEG(".jpeg", "image/jpeg"),
    _JPG(".jpg", "image/jpeg"),
    _JS(".js", "application/x-javascript"),
    _JSP(".jsp", "text/html"),
    _LA1(".la1", "audio/x-liquid-file"),
    _LAR(".lar", "application/x-laplayer-reg"),
    _LATEX(".latex", "application/x-latex"),
    _LAVS(".lavs", "audio/x-liquid-secure"),
    _LBM(".lbm", "application/x-lbm"),
    _LMSFF(".lmsff", "audio/x-la-lms"),
    _LS(".ls", "application/x-javascript"),
    _LTR(".ltr", "application/x-ltr"),
    _M1V(".m1v", "video/x-mpeg"),
    _M2V(".m2v", "video/x-mpeg"),
    _M3U(".m3u", "audio/mpegurl"),
    _M4E(".m4e", "video/mpeg4"),
    _MAC(".mac", "application/x-mac"),
    _MAN(".man", "application/x-troff-man"),
    _MATH(".math", "text/xml"),
    _MDB(".mdb", "application/x-mdb"),
    _MFP(".mfp", "application/x-shockwave-flash"),
    _MHT(".mht", "message/rfc822"),
    _MHTML(".mhtml", "message/rfc822"),
    _MI(".mi", "application/x-mi"),
    _MID(".mid", "audio/mid"),
    _MIDI(".midi", "audio/mid"),
    _MIL(".mil", "application/x-mil"),
    _MML(".mml", "text/xml"),
    _MND(".mnd", "audio/x-musicnet-download"),
    _MNS(".mns", "audio/x-musicnet-stream"),
    _MOCHA(".mocha", "application/x-javascript"),
    _MOVIE(".movie", "video/x-sgi-movie"),
    _MP1(".mp1", "audio/mp1"),
    _MP2(".mp2", "audio/mp2"),
    _MP2V(".mp2v", "video/mpeg"),
    _MP3(".mp3", "audio/mp3"),
    _MP4(".mp4", "video/mp4"),
    _MPA(".mpa", "video/x-mpg"),
    _MPD(".mpd", "application/-project"),
    _MPE(".mpe", "video/x-mpeg"),
    _MPEG(".mpeg", "video/mpg"),
    _MPG(".mpg", "video/mpg"),
    _MPGA(".mpga", "audio/rn-mpeg"),
    _MPP(".mpp", "application/-project"),
    _MPS(".mps", "video/x-mpeg"),
    _MPT(".mpt", "application/-project"),
    _MPV(".mpv", "video/mpg"),
    _MPV2(".mpv2", "video/mpeg"),
    _MPW(".mpw", "application/s-project"),
    _MPX(".mpx", "application/-project"),
    _MTX(".mtx", "text/xml"),
    _MXP(".mxp", "application/x-mmxp"),
    _NET(".net", "image/pnetvue"),
    _NRF(".nrf", "application/x-nrf"),
    _NWS(".nws", "message/rfc822"),
    _ODC(".odc", "text/x-ms-odc"),
    _OUT(".out", "application/x-out"),
    _P10(".p10", "application/pkcs10"),
    _P12(".p12", "application/x-pkcs12"),
    _P7B(".p7b", "application/x-pkcs7-certificates"),
    _P7C(".p7c", "application/pkcs7-mime"),
    _P7M(".p7m", "application/pkcs7-mime"),
    _P7R(".p7r", "application/x-pkcs7-certreqresp"),
    _P7S(".p7s", "application/pkcs7-signature"),
    _PC5(".pc5", "application/x-pc5"),
    _PCI(".pci", "application/x-pci"),
    _PCL(".pcl", "application/x-pcl"),
    _PCX(".pcx", "application/x-pcx"),
    _PDF(".pdf", "application/pdf"),
    _PDX(".pdx", "application/vnd.adobe.pdx"),
    _PFX(".pfx", "application/x-pkcs12"),
    _PGL(".pgl", "application/x-pgl"),
    _PIC(".pic", "application/x-pic"),
    _PKO(".pko", "application-pki.pko"),
    _PL(".pl", "application/x-perl"),
    _PLG(".plg", "text/html"),
    _PLS(".pls", "audio/scpls"),
    _PLT(".plt", "application/x-plt"),
    _PNG(".png", "image/png"),
    _POT(".pot", "applications-powerpoint"),
    _PPA(".ppa", "application/vs-powerpoint"),
    _PPM(".ppm", "application/x-ppm"),
    _PPS(".pps", "application-powerpoint"),
    _PPT(".ppt", "applications-powerpoint"),
    _PR(".pr", "application/x-pr"),
    _PRF(".prf", "application/pics-rules"),
    _PRN(".prn", "application/x-prn"),
    _PRT(".prt", "application/x-prt"),
    _PS(".ps", "application/postscript"),
    _PTN(".ptn", "application/x-ptn"),
    _PWZ(".pwz", "application/powerpoint"),
    _R3T(".r3t", "text/vnd.rn-realtext3d"),
    _RA(".ra", "audio/vnd.rn-realaudio"),
    _RAM(".ram", "audio/x-pn-realaudio"),
    _RAS(".ras", "application/x-ras"),
    _RAT(".rat", "application/rat-file"),
    _RDF(".rdf", "text/xml"),
    _REC(".rec", "application/vnd.rn-recording"),
    _RED(".red", "application/x-red"),
    _RGB(".rgb", "application/x-rgb"),
    _RJS(".rjs", "application/vnd.rn-realsystem-rjs"),
    _RJT(".rjt", "application/vnd.rn-realsystem-rjt"),
    _RLC(".rlc", "application/x-rlc"),
    _RLE(".rle", "application/x-rle"),
    _RM(".rm", "application/vnd.rn-realmedia"),
    _RMF(".rmf", "application/vnd.adobe.rmf"),
    _RMI(".rmi", "audio/mid"),
    _RMJ(".rmj", "application/vnd.rn-realsystem-rmj"),
    _RMM(".rmm", "audio/x-pn-realaudio"),
    _RMP(".rmp", "application/vnd.rn-rn_music_package"),
    _RMS(".rms", "application/vnd.rn-realmedia-secure"),
    _RMVB(".rmvb", "application/vnd.rn-realmedia-vbr"),
    _RMX(".rmx", "application/vnd.rn-realsystem-rmx"),
    _RNX(".rnx", "application/vnd.rn-realplayer"),
    _RP(".rp", "image/vnd.rn-realpix"),
    _RPM(".rpm", "audio/x-pn-realaudio-plugin"),
    _RSML(".rsml", "application/vnd.rn-rsml"),
    _RT(".rt", "text/vnd.rn-realtext"),
    _RTF(".rtf", "application/x-rtf"),
    _RV(".rv", "video/vnd.rn-realvideo"),
    _SAM(".sam", "application/x-sam"),
    _SAT(".sat", "application/x-sat"),
    _SDP(".sdp", "application/sdp"),
    _SDW(".sdw", "application/x-sdw"),
    _SIT(".sit", "application/x-stuffit"),
    _SLB(".slb", "application/x-slb"),
    _SLD(".sld", "application/x-sld"),
    _SLK(".slk", "drawing/x-slk"),
    _SMI(".smi", "application/smil"),
    _SMIL(".smil", "application/smil"),
    _SMK(".smk", "application/x-smk"),
    _SND(".snd", "audio/basic"),
    _SOL(".sol", "text/plain"),
    _SOR(".sor", "text/plain"),
    _SPC(".spc", "application/x-pkcs7-certificates"),
    _SPL(".spl", "application/futuresplash"),
    _SPP(".spp", "text/xml"),
    _SSM(".ssm", "application/streamingmedia"),
    _SST(".sst", "application-pki.certstore"),
    _STL(".stl", "application/-pki.stl"),
    _STM(".stm", "text/html"),
    _STY(".sty", "application/x-sty"),
    _SVG(".svg", "text/xml"),
    _SWF(".swf", "application/x-shockwave-flash"),
    _TDF(".tdf", "application/x-tdf"),
    _TG4(".tg4", "application/x-tg4"),
    _TGA(".tga", "application/x-tga"),
    _TIF(".tif", "image/tiff"),
    _TIFF(".tiff", "image/tiff"),
    _TLD(".tld", "text/xml"),
    _TOP(".top", "drawing/x-top"),
    _TORRENT(".torrent", "application/x-bittorrent"),
    _TSD(".tsd", "text/xml"),
    _TXT(".txt", "text/plain"),
    _UIN(".uin", "application/x-icq"),
    _ULS(".uls", "text/iuls"),
    _VCF(".vcf", "text/x-vcard"),
    _VDA(".vda", "application/x-vda"),
    _VDX(".vdx", "application/vnd.visio"),
    _VML(".vml", "text/xml"),
    _VPG(".vpg", "application/x-vpeg005"),
    _VSD(".vsd", "application/x-vsd"),
    _VSS(".vss", "application/vnd.visio"),
    _VST(".vst", "application/x-vst"),
    _VSW(".vsw", "application/vnd.visio"),
    _VSX(".vsx", "application/vnd.visio"),
    _VTX(".vtx", "application/vnd.visio"),
    _VXML(".vxml", "text/xml"),
    _WAV(".wav", "audio/wav"),
    _WAX(".wax", "audio/x-ms-wax"),
    _WB1(".wb1", "application/x-wb1"),
    _WB2(".wb2", "application/x-wb2"),
    _WB3(".wb3", "application/x-wb3"),
    _WBMP(".wbmp", "image/vnd.wap.wbmp"),
    _WIZ(".wiz", "application/msword"),
    _WK3(".wk3", "application/x-wk3"),
    _WK4(".wk4", "application/x-wk4"),
    _WKQ(".wkq", "application/x-wkq"),
    _WKS(".wks", "application/x-wks"),
    _WM(".wm", "video/x-ms-wm"),
    _WMA(".wma", "audio/x-ms-wma"),
    _WMD(".wmd", "application/x-ms-wmd"),
    _WMF(".wmf", "application/x-wmf"),
    _WML(".wml", "text/vnd.wap.wml"),
    _WMV(".wmv", "video/x-ms-wmv"),
    _WMX(".wmx", "video/x-ms-wmx"),
    _WMZ(".wmz", "application/x-ms-wmz"),
    _WP6(".wp6", "application/x-wp6"),
    _WPD(".wpd", "application/x-wpd"),
    _WPG(".wpg", "application/x-wpg"),
    _WPL(".wpl", "application/-wpl"),
    _WQ1(".wq1", "application/x-wq1"),
    _WR1(".wr1", "application/x-wr1"),
    _WRI(".wri", "application/x-wri"),
    _WRK(".wrk", "application/x-wrk"),
    _WS(".ws", "application/x-ws"),
    _WS2(".ws2", "application/x-ws"),
    _WSC(".wsc", "text/scriptlet"),
    _WSDL(".wsdl", "text/xml"),
    _WVX(".wvx", "video/x-ms-wvx"),
    _XDP(".xdp", "application/vnd.adobe.xdp"),
    _XDR(".xdr", "text/xml"),
    _XFD(".xfd", "application/vnd.adobe.xfd"),
    _XFDF(".xfdf", "application/vnd.adobe.xfdf"),
    _XHTML(".xhtml", "text/html"),
    _XLS(".xls", "application/x-xls"),
    _XLW(".xlw", "application/x-xlw"),
    _XML(".xml", "text/xml"),
    _XPL(".xpl", "audio/scpls"),
    _XQ(".xq", "text/xml"),
    _XQL(".xql", "text/xml"),
    _XQUERY(".xquery", "text/xml"),
    _XSD(".xsd", "text/xml"),
    _XSL(".xsl", "text/xml"),
    _XSLT(".xslt", "text/xml"),
    _XWD(".xwd", "application/x-xwd"),
    _X_B(".x_b", "application/x-x_b"),
    _X_T(".x_t", "application/x-x_t");


    private final String extension;
    private final String mimeType;

    MimeTypeEnum(String extension, String mimeType) {
        this.extension = extension;
        this.mimeType = mimeType;
    }

    public String getExtension() {
        return extension;
    }

    public String getMimeType() {
        return mimeType;
    }

    /**
     * 根据文件扩展名获取对应的 MIME 类型
     * @param extension 文件后缀
     * @return
     */
    public static MimeTypeEnum getMimeTypeByExtension(String extension) {
        if (Strings.isNotBlank(extension)) {
            EnumSet<MimeTypeEnum> mimeTypeEnums = EnumSet.allOf(MimeTypeEnum.class);
            return mimeTypeEnums.stream().filter(f->extension.equals(f.extension)).findFirst().orElseThrow(() -> new ServiceException("获取失败"));
        }
        return UNKNOWN;
    }
}

下方json格式

{
  ".*": "application/octet-stream",
  ".001": "application/x-001",
  ".301": "application/x-301",
  ".323": "text/h323",
  ".906": "application/x-906",
  ".907": "drawing/907",
  ".a11": "application/x-a11",
  ".acp": "audio/x-mei-aac",
  ".ai": "application/postscript",
  ".aif": "audio/aiff",
  ".aifc": "audio/aiff",
  ".aiff": "audio/aiff",
  ".anv": "application/x-anv",
  ".asa": "text/asa",
  ".asf": "video/x-ms-asf",
  ".asp": "text/asp",
  ".asx": "video/x-ms-asf",
  ".au": "audio/basic",
  ".avi": "video/avi",
  ".awf": "application/vnd.adobe.workflow",
  ".biz": "text/xml",
  ".bmp": "application/x-bmp",
  ".bot": "application/x-bot",
  ".c4t": "application/x-c4t",
  ".c90": "application/x-c90",
  ".cal": "application/x-cals",
  ".cat": "application/s-pki.seccat",
  ".cdf": "application/x-netcdf",
  ".cdr": "application/x-cdr",
  ".cel": "application/x-cel",
  ".cer": "application/x-x509-ca-cert",
  ".cg4": "application/x-g4",
  ".cgm": "application/x-cgm",
  ".cit": "application/x-cit",
  ".class": "java/*",
  ".cml": "text/xml",
  ".cmp": "application/x-cmp",
  ".cmx": "application/x-cmx",
  ".cot": "application/x-cot",
  ".crl": "application/pkix-crl",
  ".crt": "application/x-x509-ca-cert",
  ".csi": "application/x-csi",
  ".css": "text/css",
  ".cut": "application/x-cut",
  ".dbf": "application/x-dbf",
  ".dbm": "application/x-dbm",
  ".dbx": "application/x-dbx",
  ".dcd": "text/xml",
  ".dcx": "application/x-dcx",
  ".der": "application/x-x509-ca-cert",
  ".dgn": "application/x-dgn",
  ".dib": "application/x-dib",
  ".dll": "application/x-msdownload",
  ".doc": "application/msword",
  ".dot": "application/msword",
  ".drw": "application/x-drw",
  ".dtd": "text/xml",
  ".dwf": "Model/vnd.dwf",
  ".dwg": "application/x-dwg",
  ".dxb": "application/x-dxb",
  ".dxf": "application/x-dxf",
  ".edn": "application/vnd.adobe.edn",
  ".emf": "application/x-emf",
  ".eml": "message/rfc822",
  ".ent": "text/xml",
  ".epi": "application/x-epi",
  ".eps": "application/x-ps",
  ".etd": "application/x-ebx",
  ".exe": "application/x-msdownload",
  ".fax": "image/fax",
  ".fdf": "application/vnd.fdf",
  ".fif": "application/fractals",
  ".fo": "text/xml",
  ".frm": "application/x-frm",
  ".g4": "application/x-g4",
  ".gbr": "application/x-gbr",
  ".gcd": "application/x-gcd",
  ".gif": "image/gif",
  ".gl2": "application/x-gl2",
  ".gp4": "application/x-gp4",
  ".hgl": "application/x-hgl",
  ".hmr": "application/x-hmr",
  ".hpg": "application/x-hpgl",
  ".hpl": "application/x-hpl",
  ".hqx": "application/mac-binhex40",
  ".hrf": "application/x-hrf",
  ".hta": "application/hta",
  ".htc": "text/x-component",
  ".htm": "text/html",
  ".html": "text/html",
  ".htt": "text/webviewhtml",
  ".htx": "text/html",
  ".icb": "application/x-icb",
  ".ico": "image/x-icon",
  ".iff": "application/x-iff",
  ".ig4": "application/x-g4",
  ".igs": "application/x-igs",
  ".iii": "application/x-iphone",
  ".img": "application/x-img",
  ".ins": "application/x-internet-signup",
  ".isp": "application/x-internet-signup",
  ".IVF": "video/x-ivf",
  ".java": "java/*",
  ".jfif": "image/jpeg",
  ".jpe": "image/jpeg",
  ".jpeg": "image/jpeg",
  ".jpg": "image/jpeg",
  ".js": "application/x-javascript",
  ".jsp": "text/html",
  ".la1": "audio/x-liquid-file",
  ".lar": "application/x-laplayer-reg",
  ".latex": "application/x-latex",
  ".lavs": "audio/x-liquid-secure",
  ".lbm": "application/x-lbm",
  ".lmsff": "audio/x-la-lms",
  ".ls": "application/x-javascript",
  ".ltr": "application/x-ltr",
  ".m1v": "video/x-mpeg",
  ".m2v": "video/x-mpeg",
  ".m3u": "audio/mpegurl",
  ".m4e": "video/mpeg4",
  ".mac": "application/x-mac",
  ".man": "application/x-troff-man",
  ".math": "text/xml",
  ".mdb": "application/x-mdb",
  ".mfp": "application/x-shockwave-flash",
  ".mht": "message/rfc822",
  ".mhtml": "message/rfc822",
  ".mi": "application/x-mi",
  ".mid": "audio/mid",
  ".midi": "audio/mid",
  ".mil": "application/x-mil",
  ".mml": "text/xml",
  ".mnd": "audio/x-musicnet-download",
  ".mns": "audio/x-musicnet-stream",
  ".mocha": "application/x-javascript",
  ".movie": "video/x-sgi-movie",
  ".mp1": "audio/mp1",
  ".mp2": "audio/mp2",
  ".mp2v": "video/mpeg",
  ".mp3": "audio/mp3",
  ".mp4": "video/mp4",
  ".mpa": "video/x-mpg",
  ".mpd": "application/-project",
  ".mpe": "video/x-mpeg",
  ".mpeg": "video/mpg",
  ".mpg": "video/mpg",
  ".mpga": "audio/rn-mpeg",
  ".mpp": "application/-project",
  ".mps": "video/x-mpeg",
  ".mpt": "application/-project",
  ".mpv": "video/mpg",
  ".mpv2": "video/mpeg",
  ".mpw": "application/s-project",
  ".mpx": "application/-project",
  ".mtx": "text/xml",
  ".mxp": "application/x-mmxp",
  ".net": "image/pnetvue",
  ".nrf": "application/x-nrf",
  ".nws": "message/rfc822",
  ".odc": "text/x-ms-odc",
  ".out": "application/x-out",
  ".p10": "application/pkcs10",
  ".p12": "application/x-pkcs12",
  ".p7b": "application/x-pkcs7-certificates",
  ".p7c": "application/pkcs7-mime",
  ".p7m": "application/pkcs7-mime",
  ".p7r": "application/x-pkcs7-certreqresp",
  ".p7s": "application/pkcs7-signature",
  ".pc5": "application/x-pc5",
  ".pci": "application/x-pci",
  ".pcl": "application/x-pcl",
  ".pcx": "application/x-pcx",
  ".pdf": "application/pdf",
  ".pdx": "application/vnd.adobe.pdx",
  ".pfx": "application/x-pkcs12",
  ".pgl": "application/x-pgl",
  ".pic": "application/x-pic",
  ".pko": "application-pki.pko",
  ".pl": "application/x-perl",
  ".plg": "text/html",
  ".pls": "audio/scpls",
  ".plt": "application/x-plt",
  ".png": "image/png",
  ".pot": "applications-powerpoint",
  ".ppa": "application/vs-powerpoint",
  ".ppm": "application/x-ppm",
  ".pps": "application-powerpoint",
  ".ppt": "applications-powerpoint",
  ".pr": "application/x-pr",
  ".prf": "application/pics-rules",
  ".prn": "application/x-prn",
  ".prt": "application/x-prt",
  ".ps": "application/postscript",
  ".ptn": "application/x-ptn",
  ".pwz": "application/powerpoint",
  ".r3t": "text/vnd.rn-realtext3d",
  ".ra": "audio/vnd.rn-realaudio",
  ".ram": "audio/x-pn-realaudio",
  ".ras": "application/x-ras",
  ".rat": "application/rat-file",
  ".rdf": "text/xml",
  ".rec": "application/vnd.rn-recording",
  ".red": "application/x-red",
  ".rgb": "application/x-rgb",
  ".rjs": "application/vnd.rn-realsystem-rjs",
  ".rjt": "application/vnd.rn-realsystem-rjt",
  ".rlc": "application/x-rlc",
  ".rle": "application/x-rle",
  ".rm": "application/vnd.rn-realmedia",
  ".rmf": "application/vnd.adobe.rmf",
  ".rmi": "audio/mid",
  ".rmj": "application/vnd.rn-realsystem-rmj",
  ".rmm": "audio/x-pn-realaudio",
  ".rmp": "application/vnd.rn-rn_music_package",
  ".rms": "application/vnd.rn-realmedia-secure",
  ".rmvb": "application/vnd.rn-realmedia-vbr",
  ".rmx": "application/vnd.rn-realsystem-rmx",
  ".rnx": "application/vnd.rn-realplayer",
  ".rp": "image/vnd.rn-realpix",
  ".rpm": "audio/x-pn-realaudio-plugin",
  ".rsml": "application/vnd.rn-rsml",
  ".rt": "text/vnd.rn-realtext",
  ".rtf": "application/x-rtf",
  ".rv": "video/vnd.rn-realvideo",
  ".sam": "application/x-sam",
  ".sat": "application/x-sat",
  ".sdp": "application/sdp",
  ".sdw": "application/x-sdw",
  ".sit": "application/x-stuffit",
  ".slb": "application/x-slb",
  ".sld": "application/x-sld",
  ".slk": "drawing/x-slk",
  ".smi": "application/smil",
  ".smil": "application/smil",
  ".smk": "application/x-smk",
  ".snd": "audio/basic",
  ".sol": "text/plain",
  ".sor": "text/plain",
  ".spc": "application/x-pkcs7-certificates",
  ".spl": "application/futuresplash",
  ".spp": "text/xml",
  ".ssm": "application/streamingmedia",
  ".sst": "application-pki.certstore",
  ".stl": "application/-pki.stl",
  ".stm": "text/html",
  ".sty": "application/x-sty",
  ".svg": "text/xml",
  ".swf": "application/x-shockwave-flash",
  ".tdf": "application/x-tdf",
  ".tg4": "application/x-tg4",
  ".tga": "application/x-tga",
  ".tif": "image/tiff",
  ".tiff": "image/tiff",
  ".tld": "text/xml",
  ".top": "drawing/x-top",
  ".torrent": "application/x-bittorrent",
  ".tsd": "text/xml",
  ".txt": "text/plain",
  ".uin": "application/x-icq",
  ".uls": "text/iuls",
  ".vcf": "text/x-vcard",
  ".vda": "application/x-vda",
  ".vdx": "application/vnd.visio",
  ".vml": "text/xml",
  ".vpg": "application/x-vpeg005",
  ".vsd": "application/x-vsd",
  ".vss": "application/vnd.visio",
  ".vst": "application/x-vst",
  ".vsw": "application/vnd.visio",
  ".vsx": "application/vnd.visio",
  ".vtx": "application/vnd.visio",
  ".vxml": "text/xml",
  ".wav": "audio/wav",
  ".wax": "audio/x-ms-wax",
  ".wb1": "application/x-wb1",
  ".wb2": "application/x-wb2",
  ".wb3": "application/x-wb3",
  ".wbmp": "image/vnd.wap.wbmp",
  ".wiz": "application/msword",
  ".wk3": "application/x-wk3",
  ".wk4": "application/x-wk4",
  ".wkq": "application/x-wkq",
  ".wks": "application/x-wks",
  ".wm": "video/x-ms-wm",
  ".wma": "audio/x-ms-wma",
  ".wmd": "application/x-ms-wmd",
  ".wmf": "application/x-wmf",
  ".wml": "text/vnd.wap.wml",
  ".wmv": "video/x-ms-wmv",
  ".wmx": "video/x-ms-wmx",
  ".wmz": "application/x-ms-wmz",
  ".wp6": "application/x-wp6",
  ".wpd": "application/x-wpd",
  ".wpg": "application/x-wpg",
  ".wpl": "application/-wpl",
  ".wq1": "application/x-wq1",
  ".wr1": "application/x-wr1",
  ".wri": "application/x-wri",
  ".wrk": "application/x-wrk",
  ".ws": "application/x-ws",
  ".ws2": "application/x-ws",
  ".wsc": "text/scriptlet",
  ".wsdl": "text/xml",
  ".wvx": "video/x-ms-wvx",
  ".xdp": "application/vnd.adobe.xdp",
  ".xdr": "text/xml",
  ".xfd": "application/vnd.adobe.xfd",
  ".xfdf": "application/vnd.adobe.xfdf",
  ".xhtml": "text/html",
  ".xls": "application/x-xls",
  ".xlw": "application/x-xlw",
  ".xml": "text/xml",
  ".xpl": "audio/scpls",
  ".xq": "text/xml",
  ".xql": "text/xml",
  ".xquery": "text/xml",
  ".xsd": "text/xml",
  ".xsl": "text/xml",
  ".xslt": "text/xml",
  ".xwd": "application/x-xwd",
  ".x_b": "application/x-x_b",
  ".x_t": "application/x-x_t"
}
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件类型校验是确保文件上传的安全性和准确性的重要步骤。其中,文件类型校验可以通过检查文件名和文件头信息(也称为魔术数字)来实现。文件头信息是一些预定义的字节序列,用于标识特定的文件类型。 常见的文件头信息及其对应文件类型如下: - JPEG:FF D8 FF - PNG:89 50 4E 47 0D 0A 1A 0A - GIF:47 49 46 38 39 61 或者 47 49 46 38 37 61 - PDF:25 50 44 46 2D 或者 25 50 44 46 2E - MP3:FF FB 或者 FF F3 文件头信息并不是绝对可靠的,因为它们可以被修改或伪造。为了增强文件类型校验的安全性,可以结合文件后缀名MIME-TYPE来进行校验。 文件后缀名是指文件名中最后一个“.”后面的字符串,例如“.jpg”、“.png”等。MIME-TYPE是指互联网媒体类型,用于标识文件类型。常见的MIME-TYPE及其对应文件类型如下: - image/jpeg:JPEG格式的图片 - image/png:PNG格式的图片 - image/gif:GIF格式的图片 - application/pdf:PDF格式的文档 - audio/mpeg:MP3格式的音频 在进行文件上传时,可以通过检查文件后缀名MIME-TYPE来确保上传的文件类型正确。具体实现方法可以参考以下步骤: 1. 获取上传文件文件名和文件头信息。 2. 根据文件头信息判断文件类型是否正确。 3. 根据文件名获取文件后缀名,与文件头信息中的文件类型进行比较,确保文件类型一致。 4. 根据文件类型获取对应MIME-TYPE,与上传的文件MIME-TYPE进行比较,确保MIME-TYPE一致。 如果文件类型校验不通过,可以拒绝上传或者给出相应的提示信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值