Java 下载文件扩展名以及Mime-ContentType参照枚举类(详细)

背景

对接Minio等OSS文件存储的时候,我们市场会发现需要填写文件格式,不然默认就是application/octet-stream 这种二进制文件流,需要我们自己手动改文件拓展名才能打开

JSON数据接口

{
  "xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
  "xltx": "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
  "potx": "application/vnd.openxmlformats-officedocument.presentationml.template",
  "ppsx": "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
  "pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
  "sldx": "application/vnd.openxmlformats-officedocument.presentationml.slide",
  "docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
  "dotx": "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
  "xlam": "application/vnd.ms-excel.addin.macroEnabled.12",
  "xlsb": "application/vnd.ms-excel.sheet.binary.macroEnabled.12",
  "apk": "application/vnd.android.package-archive",
  "hqx": "application/mac-binhex40",
  "cpt": "application/mac-compactpro",
  "doc": "application/msword",
  "ogg": "audio/ogg",
  "pdf": "application/pdf",
  "rtf": "text/rtf",
  "mif": "application/vnd.mif",
  "xls": "application/vnd.ms-excel",
  "ppt": "application/vnd.ms-powerpoint",
  "odc": "application/vnd.oasis.opendocument.chart",
  "odb": "application/vnd.oasis.opendocument.database",
  "odf": "application/vnd.oasis.opendocument.formula",
  "odg": "application/vnd.oasis.opendocument.graphics",
  "otg": "application/vnd.oasis.opendocument.graphics-template",
  "odi": "application/vnd.oasis.opendocument.image",
  "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",
  "sxw": "application/vnd.sun.xml.writer",
  "stw": "application/vnd.sun.xml.writer.template",
  "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",
  "sxg": "application/vnd.sun.xml.writer.global",
  "sxm": "application/vnd.sun.xml.math",
  "sis": "application/vnd.symbian.install",
  "wbxml": "application/vnd.wap.wbxml",
  "wmlc": "application/vnd.wap.wmlc",
  "wmlsc": "application/vnd.wap.wmlscriptc",
  "bcpio": "application/x-bcpio",
  "torrent": "application/x-bittorrent",
  "bz2": "application/x-bzip2",
  "vcd": "application/x-cdlink",
  "pgn": "application/x-chess-pgn",
  "cpio": "application/x-cpio",
  "csh": "application/x-csh",
  "dvi": "application/x-dvi",
  "spl": "application/x-futuresplash",
  "gtar": "application/x-gtar",
  "hdf": "application/x-hdf",
  "jar": "application/java-archive",
  "jnlp": "application/x-java-jnlp-file",
  "js": "application/javascript",
  "json": "application/json",
  "ksp": "application/x-kspread",
  "chrt": "application/x-kchart",
  "kil": "application/x-killustrator",
  "latex": "application/x-latex",
  "rpm": "application/x-rpm",
  "sh": "application/x-sh",
  "shar": "application/x-shar",
  "swf": "application/x-shockwave-flash",
  "sit": "application/x-stuffit",
  "sv4cpio": "application/x-sv4cpio",
  "sv4crc": "application/x-sv4crc",
  "tar": "application/x-tar",
  "tcl": "application/x-tcl",
  "tex": "application/x-tex",
  "man": "application/x-troff-man",
  "me": "application/x-troff-me",
  "ms": "application/x-troff-ms",
  "ustar": "application/x-ustar",
  "src": "application/x-wais-source",
  "zip": "application/zip",
  "m3u": "audio/x-mpegurl",
  "ra": "audio/x-pn-realaudio",
  "wav": "audio/x-wav",
  "wma": "audio/x-ms-wma",
  "wax": "audio/x-ms-wax",
  "pdb": "chemical/x-pdb",
  "xyz": "chemical/x-xyz",
  "bmp": "image/bmp",
  "gif": "image/gif",
  "ief": "image/ief",
  "png": "image/png",
  "wbmp": "image/vnd.wap.wbmp",
  "ras": "image/x-cmu-raster",
  "pnm": "image/x-portable-anymap",
  "pbm": "image/x-portable-bitmap",
  "pgm": "image/x-portable-graymap",
  "ppm": "image/x-portable-pixmap",
  "rgb": "image/x-rgb",
  "xbm": "image/x-xbitmap",
  "xpm": "image/x-xpixmap",
  "xwd": "image/x-xwindowdump",
  "css": "text/css",
  "rtx": "text/richtext",
  "tsv": "text/tab-separated-values",
  "jad": "text/vnd.sun.j2me.app-descriptor",
  "wml": "text/vnd.wap.wml",
  "wmls": "text/vnd.wap.wmlscript",
  "etx": "text/x-setext",
  "mxu": "video/vnd.mpegurl",
  "flv": "video/x-flv",
  "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",
  "ice": "x-conference/x-cooltalk",
  "3gp": "video/3gpp",
  "ai": "application/postscript",
  "aif": "audio/x-aiff",
  "aifc": "audio/x-aiff",
  "aiff": "audio/x-aiff",
  "asc": "text/plain",
  "atom": "application/atom+xml",
  "au": "audio/basic",
  "bin": "application/octet-stream",
  "cdf": "application/x-netcdf",
  "cgm": "image/cgm",
  "class": "application/octet-stream",
  "dcr": "application/x-director",
  "dif": "video/x-dv",
  "dir": "application/x-director",
  "djv": "image/vnd.djvu",
  "djvu": "image/vnd.djvu",
  "dll": "application/octet-stream",
  "dmg": "application/octet-stream",
  "dms": "application/octet-stream",
  "dtd": "application/xml-dtd",
  "dv": "video/x-dv",
  "dxr": "application/x-director",
  "eps": "application/postscript",
  "exe": "application/octet-stream",
  "ez": "application/andrew-inset",
  "gram": "application/srgs",
  "grxml": "application/srgs+xml",
  "gz": "application/x-gzip",
  "htm": "text/html",
  "html": "text/html",
  "ico": "image/x-icon",
  "ics": "text/calendar",
  "ifb": "text/calendar",
  "iges": "model/iges",
  "igs": "model/iges",
  "jp2": "image/jp2",
  "jpe": "image/jpeg",
  "jpeg": "image/jpeg",
  "jpg": "image/jpeg",
  "kar": "audio/midi",
  "lha": "application/octet-stream",
  "lzh": "application/octet-stream",
  "m4a": "audio/mp4a-latm",
  "m4p": "audio/mp4a-latm",
  "m4u": "video/vnd.mpegurl",
  "m4v": "video/x-m4v",
  "mac": "image/x-macpaint",
  "mathml": "application/mathml+xml",
  "mesh": "model/mesh",
  "mid": "audio/midi",
  "midi": "audio/midi",
  "mov": "video/quicktime",
  "mp2": "audio/mpeg",
  "mp3": "audio/mpeg",
  "mp4": "video/mp4",
  "mpe": "video/mpeg",
  "mpeg": "video/mpeg",
  "mpg": "video/mpeg",
  "mpga": "audio/mpeg",
  "msh": "model/mesh",
  "nc": "application/x-netcdf",
  "oda": "application/oda",
  "ogv": "video/ogv",
  "pct": "image/pict",
  "pic": "image/pict",
  "pict": "image/pict",
  "pnt": "image/x-macpaint",
  "pntg": "image/x-macpaint",
  "ps": "application/postscript",
  "qt": "video/quicktime",
  "qti": "image/x-quicktime",
  "qtif": "image/x-quicktime",
  "ram": "audio/x-pn-realaudio",
  "rdf": "application/rdf+xml",
  "rm": "application/vnd.rn-realmedia",
  "roff": "application/x-troff",
  "sgm": "text/sgml",
  "sgml": "text/sgml",
  "silo": "model/mesh",
  "skd": "application/x-koan",
  "skm": "application/x-koan",
  "skp": "application/x-koan",
  "skt": "application/x-koan",
  "smi": "application/smil",
  "smil": "application/smil",
  "snd": "audio/basic",
  "so": "application/octet-stream",
  "svg": "image/svg+xml",
  "t": "application/x-troff",
  "texi": "application/x-texinfo",
  "texinfo": "application/x-texinfo",
  "tif": "image/tiff",
  "tiff": "image/tiff",
  "tr": "application/x-troff",
  "txt": "text/plain",
  "vrml": "model/vrml",
  "vxml": "application/voicexml+xml",
  "webm": "video/webm",
  "webp": "image/webp",
  "wrl": "model/vrml",
  "xht": "application/xhtml+xml",
  "xhtml": "application/xhtml+xml",
  "xml": "application/xml",
  "xsl": "application/xml",
  "xslt": "application/xslt+xml",
  "xul": "application/vnd.mozilla.xul+xml"
}

读写方法(这里参照的是Enum-Java的格式)

package org.example;

import cn.hutool.core.io.file.FileReader;
import cn.hutool.core.io.file.FileWriter;
import com.alibaba.fastjson.JSONObject;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.Set;

public class Main8 {

    public static void main(String[] args) {
        FileReader fileReader = new FileReader("C:\\Users\\cn-njlouislv01\\Desktop\\上面的JSON元数据.json");
        String result = fileReader.readString();
        JSONObject object = JSONObject.parseObject(result);
        Set<String> keySet = object.keySet();
        List<String> javaEnums = new ArrayList<>();
        keySet.forEach(key -> {
            String value = object.getString(key);
            String[] split = value.split("/");
            String type = "";
            String subType = "";
            if (split.length == 2) {
                type = split[0];
                subType = split[1];
            }
            String body = "MIME_" + key.toUpperCase(Locale.ROOT) + " (" + "\"" + type + "\"" + "," + "\"" + subType + "\"" + "," + "\"" + value + "\"" + "),";
            javaEnums.add(body);
        });
        // 追加所有类型
        String all = "MIME_ALL " + " (" + "\"" + "*" + "\"" + "," + "\"" + "*" + "\"" + "," + "\"" + "*/*" + "\"" + "),";
        String applicationOctetStream = "APPLICATION_OCTET_STREAM " + " (" + "\"" + "application" + "\"" + "," + "\"" + "octet-stream" + "\"" + "," + "\"" + "application/octet-stream" + "\"" + "),";
        javaEnums.add(all);
        javaEnums.add(applicationOctetStream);

		// 根据字母排序
        Collections.sort(javaEnums, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareTo(o2);
            }
        });

        FileWriter writer = new FileWriter("C:\\Users\\cn-njlouislv01\\Desktop\\需要写入的文件.txt");
        writer.appendLines(javaEnums);

    }
}

文件扩展名(后缀)和文件流(Mime)参照表

这里我通过脚本的方式写了一个枚举类,因为实在太多了,我一个个CV,估计天都亮了



/**
 * MineType
 *
 * @author louis
 * @since 2023-04-27
 */
public enum MimeType {
    APPLICATION_OCTET_STREAM("application", "octet-stream", "application/octet-stream"),
    MIME_3GP("video", "3gpp", "video/3gpp"),
    MIME_AI("application", "postscript", "application/postscript"),
    MIME_AIF("audio", "x-aiff", "audio/x-aiff"),
    MIME_AIFC("audio", "x-aiff", "audio/x-aiff"),
    MIME_AIFF("audio", "x-aiff", "audio/x-aiff"),
    MIME_ALL("*", "*", "*/*"),
    MIME_APK("application", "vnd.android.package-archive", "application/vnd.android.package-archive"),
    MIME_ASC("text", "plain", "text/plain"),
    MIME_ATOM("application", "atom+xml", "application/atom+xml"),
    MIME_AU("audio", "basic", "audio/basic"),
    MIME_AVI("video", "x-msvideo", "video/x-msvideo"),
    MIME_BCPIO("application", "x-bcpio", "application/x-bcpio"),
    MIME_BIN("application", "octet-stream", "application/octet-stream"),
    MIME_BMP("image", "bmp", "image/bmp"),
    MIME_BZ2("application", "x-bzip2", "application/x-bzip2"),
    MIME_CDF("application", "x-netcdf", "application/x-netcdf"),
    MIME_CGM("image", "cgm", "image/cgm"),
    MIME_CHRT("application", "x-kchart", "application/x-kchart"),
    MIME_CLASS("application", "octet-stream", "application/octet-stream"),
    MIME_CPIO("application", "x-cpio", "application/x-cpio"),
    MIME_CPT("application", "mac-compactpro", "application/mac-compactpro"),
    MIME_CSH("application", "x-csh", "application/x-csh"),
    MIME_CSS("text", "css", "text/css"),
    MIME_DCR("application", "x-director", "application/x-director"),
    MIME_DIF("video", "x-dv", "video/x-dv"),
    MIME_DIR("application", "x-director", "application/x-director"),
    MIME_DJV("image", "vnd.djvu", "image/vnd.djvu"),
    MIME_DJVU("image", "vnd.djvu", "image/vnd.djvu"),
    MIME_DLL("application", "octet-stream", "application/octet-stream"),
    MIME_DMG("application", "octet-stream", "application/octet-stream"),
    MIME_DMS("application", "octet-stream", "application/octet-stream"),
    MIME_DOC("application", "msword", "application/msword"),
    MIME_DOCX("application", "vnd.openxmlformats-officedocument.wordprocessingml.document", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"),
    MIME_DOTX("application", "vnd.openxmlformats-officedocument.wordprocessingml.template", "application/vnd.openxmlformats-officedocument.wordprocessingml.template"),
    MIME_DTD("application", "xml-dtd", "application/xml-dtd"),
    MIME_DV("video", "x-dv", "video/x-dv"),
    MIME_DVI("application", "x-dvi", "application/x-dvi"),
    MIME_DXR("application", "x-director", "application/x-director"),
    MIME_EPS("application", "postscript", "application/postscript"),
    MIME_ETX("text", "x-setext", "text/x-setext"),
    MIME_EXE("application", "octet-stream", "application/octet-stream"),
    MIME_EZ("application", "andrew-inset", "application/andrew-inset"),
    MIME_FLV("video", "x-flv", "video/x-flv"),
    MIME_GIF("image", "gif", "image/gif"),
    MIME_GRAM("application", "srgs", "application/srgs"),
    MIME_GRXML("application", "srgs+xml", "application/srgs+xml"),
    MIME_GTAR("application", "x-gtar", "application/x-gtar"),
    MIME_GZ("application", "x-gzip", "application/x-gzip"),
    MIME_HDF("application", "x-hdf", "application/x-hdf"),
    MIME_HQX("application", "mac-binhex40", "application/mac-binhex40"),
    MIME_HTM("text", "html", "text/html"),
    MIME_HTML("text", "html", "text/html"),
    MIME_ICE("x-conference", "x-cooltalk", "x-conference/x-cooltalk"),
    MIME_ICO("image", "x-icon", "image/x-icon"),
    MIME_ICS("text", "calendar", "text/calendar"),
    MIME_IEF("image", "ief", "image/ief"),
    MIME_IFB("text", "calendar", "text/calendar"),
    MIME_IGES("model", "iges", "model/iges"),
    MIME_IGS("model", "iges", "model/iges"),
    MIME_JAD("text", "vnd.sun.j2me.app-descriptor", "text/vnd.sun.j2me.app-descriptor"),
    MIME_JAR("application", "java-archive", "application/java-archive"),
    MIME_JNLP("application", "x-java-jnlp-file", "application/x-java-jnlp-file"),
    MIME_JP2("image", "jp2", "image/jp2"),
    MIME_JPE("image", "jpeg", "image/jpeg"),
    MIME_JPEG("image", "jpeg", "image/jpeg"),
    MIME_JPG("image", "jpeg", "image/jpeg"),
    MIME_JS("application", "javascript", "application/javascript"),
    MIME_JSON("application", "json", "application/json"),
    MIME_KAR("audio", "midi", "audio/midi"),
    MIME_KIL("application", "x-killustrator", "application/x-killustrator"),
    MIME_KSP("application", "x-kspread", "application/x-kspread"),
    MIME_LATEX("application", "x-latex", "application/x-latex"),
    MIME_LHA("application", "octet-stream", "application/octet-stream"),
    MIME_LZH("application", "octet-stream", "application/octet-stream"),
    MIME_M3U("audio", "x-mpegurl", "audio/x-mpegurl"),
    MIME_M4A("audio", "mp4a-latm", "audio/mp4a-latm"),
    MIME_M4P("audio", "mp4a-latm", "audio/mp4a-latm"),
    MIME_M4U("video", "vnd.mpegurl", "video/vnd.mpegurl"),
    MIME_M4V("video", "x-m4v", "video/x-m4v"),
    MIME_MAC("image", "x-macpaint", "image/x-macpaint"),
    MIME_MAN("application", "x-troff-man", "application/x-troff-man"),
    MIME_MATHML("application", "mathml+xml", "application/mathml+xml"),
    MIME_ME("application", "x-troff-me", "application/x-troff-me"),
    MIME_MESH("model", "mesh", "model/mesh"),
    MIME_MID("audio", "midi", "audio/midi"),
    MIME_MIDI("audio", "midi", "audio/midi"),
    MIME_MIF("application", "vnd.mif", "application/vnd.mif"),
    MIME_MOV("video", "quicktime", "video/quicktime"),
    MIME_MOVIE("video", "x-sgi-movie", "video/x-sgi-movie"),
    MIME_MP2("audio", "mpeg", "audio/mpeg"),
    MIME_MP3("audio", "mpeg", "audio/mpeg"),
    MIME_MP4("video", "mp4", "video/mp4"),
    MIME_MPE("video", "mpeg", "video/mpeg"),
    MIME_MPEG("video", "mpeg", "video/mpeg"),
    MIME_MPG("video", "mpeg", "video/mpeg"),
    MIME_MPGA("audio", "mpeg", "audio/mpeg"),
    MIME_MS("application", "x-troff-ms", "application/x-troff-ms"),
    MIME_MSH("model", "mesh", "model/mesh"),
    MIME_MXU("video", "vnd.mpegurl", "video/vnd.mpegurl"),
    MIME_NC("application", "x-netcdf", "application/x-netcdf"),
    MIME_ODA("application", "oda", "application/oda"),
    MIME_ODB("application", "vnd.oasis.opendocument.database", "application/vnd.oasis.opendocument.database"),
    MIME_ODC("application", "vnd.oasis.opendocument.chart", "application/vnd.oasis.opendocument.chart"),
    MIME_ODF("application", "vnd.oasis.opendocument.formula", "application/vnd.oasis.opendocument.formula"),
    MIME_ODG("application", "vnd.oasis.opendocument.graphics", "application/vnd.oasis.opendocument.graphics"),
    MIME_ODI("application", "vnd.oasis.opendocument.image", "application/vnd.oasis.opendocument.image"),
    MIME_ODM("application", "vnd.oasis.opendocument.text-master", "application/vnd.oasis.opendocument.text-master"),
    MIME_ODP("application", "vnd.oasis.opendocument.presentation", "application/vnd.oasis.opendocument.presentation"),
    MIME_ODS("application", "vnd.oasis.opendocument.spreadsheet", "application/vnd.oasis.opendocument.spreadsheet"),
    MIME_ODT("application", "vnd.oasis.opendocument.text", "application/vnd.oasis.opendocument.text"),
    MIME_OGG("audio", "ogg", "audio/ogg"),
    MIME_OGV("video", "ogv", "video/ogv"),
    MIME_OTG("application", "vnd.oasis.opendocument.graphics-template", "application/vnd.oasis.opendocument.graphics-template"),
    MIME_OTH("application", "vnd.oasis.opendocument.text-web", "application/vnd.oasis.opendocument.text-web"),
    MIME_OTP("application", "vnd.oasis.opendocument.presentation-template", "application/vnd.oasis.opendocument.presentation-template"),
    MIME_OTS("application", "vnd.oasis.opendocument.spreadsheet-template", "application/vnd.oasis.opendocument.spreadsheet-template"),
    MIME_OTT("application", "vnd.oasis.opendocument.text-template", "application/vnd.oasis.opendocument.text-template"),
    MIME_PBM("image", "x-portable-bitmap", "image/x-portable-bitmap"),
    MIME_PCT("image", "pict", "image/pict"),
    MIME_PDB("chemical", "x-pdb", "chemical/x-pdb"),
    MIME_PDF("application", "pdf", "application/pdf"),
    MIME_PGM("image", "x-portable-graymap", "image/x-portable-graymap"),
    MIME_PGN("application", "x-chess-pgn", "application/x-chess-pgn"),
    MIME_PIC("image", "pict", "image/pict"),
    MIME_PICT("image", "pict", "image/pict"),
    MIME_PNG("image", "png", "image/png"),
    MIME_PNM("image", "x-portable-anymap", "image/x-portable-anymap"),
    MIME_PNT("image", "x-macpaint", "image/x-macpaint"),
    MIME_PNTG("image", "x-macpaint", "image/x-macpaint"),
    MIME_POTX("application", "vnd.openxmlformats-officedocument.presentationml.template", "application/vnd.openxmlformats-officedocument.presentationml.template"),
    MIME_PPM("image", "x-portable-pixmap", "image/x-portable-pixmap"),
    MIME_PPSX("application", "vnd.openxmlformats-officedocument.presentationml.slideshow", "application/vnd.openxmlformats-officedocument.presentationml.slideshow"),
    MIME_PPT("application", "vnd.ms-powerpoint", "application/vnd.ms-powerpoint"),
    MIME_PPTX("application", "vnd.openxmlformats-officedocument.presentationml.presentation", "application/vnd.openxmlformats-officedocument.presentationml.presentation"),
    MIME_PS("application", "postscript", "application/postscript"),
    MIME_QT("video", "quicktime", "video/quicktime"),
    MIME_QTI("image", "x-quicktime", "image/x-quicktime"),
    MIME_QTIF("image", "x-quicktime", "image/x-quicktime"),
    MIME_RA("audio", "x-pn-realaudio", "audio/x-pn-realaudio"),
    MIME_RAM("audio", "x-pn-realaudio", "audio/x-pn-realaudio"),
    MIME_RAS("image", "x-cmu-raster", "image/x-cmu-raster"),
    MIME_RDF("application", "rdf+xml", "application/rdf+xml"),
    MIME_RGB("image", "x-rgb", "image/x-rgb"),
    MIME_RM("application", "vnd.rn-realmedia", "application/vnd.rn-realmedia"),
    MIME_ROFF("application", "x-troff", "application/x-troff"),
    MIME_RPM("application", "x-rpm", "application/x-rpm"),
    MIME_RTF("text", "rtf", "text/rtf"),
    MIME_RTX("text", "richtext", "text/richtext"),
    MIME_SGM("text", "sgml", "text/sgml"),
    MIME_SGML("text", "sgml", "text/sgml"),
    MIME_SH("application", "x-sh", "application/x-sh"),
    MIME_SHAR("application", "x-shar", "application/x-shar"),
    MIME_SILO("model", "mesh", "model/mesh"),
    MIME_SIS("application", "vnd.symbian.install", "application/vnd.symbian.install"),
    MIME_SIT("application", "x-stuffit", "application/x-stuffit"),
    MIME_SKD("application", "x-koan", "application/x-koan"),
    MIME_SKM("application", "x-koan", "application/x-koan"),
    MIME_SKP("application", "x-koan", "application/x-koan"),
    MIME_SKT("application", "x-koan", "application/x-koan"),
    MIME_SLDX("application", "vnd.openxmlformats-officedocument.presentationml.slide", "application/vnd.openxmlformats-officedocument.presentationml.slide"),
    MIME_SMI("application", "smil", "application/smil"),
    MIME_SMIL("application", "smil", "application/smil"),
    MIME_SND("audio", "basic", "audio/basic"),
    MIME_SO("application", "octet-stream", "application/octet-stream"),
    MIME_SPL("application", "x-futuresplash", "application/x-futuresplash"),
    MIME_SRC("application", "x-wais-source", "application/x-wais-source"),
    MIME_STC("application", "vnd.sun.xml.calc.template", "application/vnd.sun.xml.calc.template"),
    MIME_STD("application", "vnd.sun.xml.draw.template", "application/vnd.sun.xml.draw.template"),
    MIME_STI("application", "vnd.sun.xml.impress.template", "application/vnd.sun.xml.impress.template"),
    MIME_STW("application", "vnd.sun.xml.writer.template", "application/vnd.sun.xml.writer.template"),
    MIME_SV4CPIO("application", "x-sv4cpio", "application/x-sv4cpio"),
    MIME_SV4CRC("application", "x-sv4crc", "application/x-sv4crc"),
    MIME_SVG("image", "svg+xml", "image/svg+xml"),
    MIME_SWF("application", "x-shockwave-flash", "application/x-shockwave-flash"),
    MIME_SXC("application", "vnd.sun.xml.calc", "application/vnd.sun.xml.calc"),
    MIME_SXD("application", "vnd.sun.xml.draw", "application/vnd.sun.xml.draw"),
    MIME_SXG("application", "vnd.sun.xml.writer.global", "application/vnd.sun.xml.writer.global"),
    MIME_SXI("application", "vnd.sun.xml.impress", "application/vnd.sun.xml.impress"),
    MIME_SXM("application", "vnd.sun.xml.math", "application/vnd.sun.xml.math"),
    MIME_SXW("application", "vnd.sun.xml.writer", "application/vnd.sun.xml.writer"),
    MIME_T("application", "x-troff", "application/x-troff"),
    MIME_TAR("application", "x-tar", "application/x-tar"),
    MIME_TCL("application", "x-tcl", "application/x-tcl"),
    MIME_TEX("application", "x-tex", "application/x-tex"),
    MIME_TEXI("application", "x-texinfo", "application/x-texinfo"),
    MIME_TEXINFO("application", "x-texinfo", "application/x-texinfo"),
    MIME_TIF("image", "tiff", "image/tiff"),
    MIME_TIFF("image", "tiff", "image/tiff"),
    MIME_TORRENT("application", "x-bittorrent", "application/x-bittorrent"),
    MIME_TR("application", "x-troff", "application/x-troff"),
    MIME_TSV("text", "tab-separated-values", "text/tab-separated-values"),
    MIME_TXT("text", "plain", "text/plain"),
    MIME_USTAR("application", "x-ustar", "application/x-ustar"),
    MIME_VCD("application", "x-cdlink", "application/x-cdlink"),
    MIME_VRML("model", "vrml", "model/vrml"),
    MIME_VXML("application", "voicexml+xml", "application/voicexml+xml"),
    MIME_WAV("audio", "x-wav", "audio/x-wav"),
    MIME_WAX("audio", "x-ms-wax", "audio/x-ms-wax"),
    MIME_WBMP("image", "vnd.wap.wbmp", "image/vnd.wap.wbmp"),
    MIME_WBXML("application", "vnd.wap.wbxml", "application/vnd.wap.wbxml"),
    MIME_WEBM("video", "webm", "video/webm"),
    MIME_WEBP("image", "webp", "image/webp"),
    MIME_WM("video", "x-ms-wm", "video/x-ms-wm"),
    MIME_WMA("audio", "x-ms-wma", "audio/x-ms-wma"),
    MIME_WML("text", "vnd.wap.wml", "text/vnd.wap.wml"),
    MIME_WMLC("application", "vnd.wap.wmlc", "application/vnd.wap.wmlc"),
    MIME_WMLS("text", "vnd.wap.wmlscript", "text/vnd.wap.wmlscript"),
    MIME_WMLSC("application", "vnd.wap.wmlscriptc", "application/vnd.wap.wmlscriptc"),
    MIME_WMV("video", "x-ms-wmv", "video/x-ms-wmv"),
    MIME_WMX("video", "x-ms-wmx", "video/x-ms-wmx"),
    MIME_WRL("model", "vrml", "model/vrml"),
    MIME_WVX("video", "x-ms-wvx", "video/x-ms-wvx"),
    MIME_XBM("image", "x-xbitmap", "image/x-xbitmap"),
    MIME_XHT("application", "xhtml+xml", "application/xhtml+xml"),
    MIME_XHTML("application", "xhtml+xml", "application/xhtml+xml"),
    MIME_XLAM("application", "vnd.ms-excel.addin.macroEnabled.12", "application/vnd.ms-excel.addin.macroEnabled.12"),
    MIME_XLS("application", "vnd.ms-excel", "application/vnd.ms-excel"),
    MIME_XLSB("application", "vnd.ms-excel.sheet.binary.macroEnabled.12", "application/vnd.ms-excel.sheet.binary.macroEnabled.12"),
    MIME_XLSX("application", "vnd.openxmlformats-officedocument.spreadsheetml.sheet", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"),
    MIME_XLTX("application", "vnd.openxmlformats-officedocument.spreadsheetml.template", "application/vnd.openxmlformats-officedocument.spreadsheetml.template"),
    MIME_XML("application", "xml", "application/xml"),
    MIME_XPM("image", "x-xpixmap", "image/x-xpixmap"),
    MIME_XSL("application", "xml", "application/xml"),
    MIME_XSLT("application", "xslt+xml", "application/xslt+xml"),
    MIME_XUL("application", "vnd.mozilla.xul+xml", "application/vnd.mozilla.xul+xml"),
    MIME_XWD("image", "x-xwindowdump", "image/x-xwindowdump"),
    MIME_XYZ("chemical", "x-xyz", "chemical/x-xyz"),
    MIME_ZIP("application", "zip", "application/zip"),
    ;

    private String type;

    private String subType;

    private String value;

    MimeType(String type, String subType, String value) {
        this.type = type;
        this.subType = subType;
        this.value = value;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getSubType() {
        return subType;
    }

    public void setSubType(String subType) {
        this.subType = subType;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

几乎包含常见和罕见的文件格式以及对应Java下载Mime流类型,类的最后我写了一个枚举转Map的方法,可以去匹配,记得大小写问题~~~

String filePath=""; File file=new File(filePath); //解决乱码问题 String filename=URLEncoder.encode(file.getName(),"utf-8"); //重置输出流 response.reset(); Response.AddHeader("Content-Disposition", "attachment;filename="+filename);//设置文件名 response.addHeader("Content-Length",file.length);//设置下载文件大小 response.setContentType("application/octet-stream");//设置文件类型 OutputStream toClient=new BufferedOuntputStream( response.getOutputStream() );//获取二进制输出流 //读取文件数据 InputStream fis=new BufferedInputStream(new FileInputStream(filePath)); byte[] buffer=new byte[file.length()]; fis.read(buffer); fis.close(); //输出文件数据 toClient.write(buffer); toClient.close(); 文件类型如下: ".*"="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/vnd.ms-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" ".dwf"="application/x-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" ".eps"="application/postscript" ".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" ".ico"="application/x-ico" ".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" ".jpe"="application/x-jpe" ".jpeg"="image/jpeg" ".jpg"="image/jpeg" ".jpg"="application/x-jpg" ".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/msaccess" ".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/mpeg4" ".mpa"="video/x-mpg" ".mpd"="application/vnd.ms-project" ".mpe"="video/x-mpeg" ".mpeg"="video/mpg" ".mpg"="video/mpg" ".mpga"="audio/rn-mpeg" ".mpp"="application/vnd.ms-project" ".mps"="video/x-mpeg" ".mpt"="application/vnd.ms-project" ".mpv"="video/mpg" ".mpv2"="video/mpeg" ".mpw"="application/vnd.ms-project" ".mpx"="application/vnd.ms-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" ".pdf"="application/pdf" ".pdx"="application/vnd.adobe.pdx" ".pfx"="application/x-pkcs12" ".pgl"="application/x-pgl" ".pic"="application/x-pic" ".pko"="application/vnd.ms-pki.pko" ".pl"="application/x-perl" ".plg"="text/html" ".pls"="audio/scpls" ".plt"="application/x-plt" ".png"="image/png" ".png"="application/x-png" ".pot"="application/vnd.ms-powerpoint" ".ppa"="application/vnd.ms-powerpoint" ".ppm"="application/x-ppm" ".pps"="application/vnd.ms-powerpoint" ".ppt"="application/vnd.ms-powerpoint" ".ppt"="application/x-ppt" ".pr"="application/x-pr" ".prf"="application/pics-rules" ".prn"="application/x-prn" ".prt"="application/x-prt" ".ps"="application/x-ps" ".ps"="application/postscript" ".ptn"="application/x-ptn" ".pwz"="application/vnd.ms-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/msword" ".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/vnd.ms-pki.certstore" ".stl"="application/vnd.ms-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" ".tif"="application/x-tif" ".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/vnd.visio" ".vsd"="application/x-vsd" ".vss"="application/vnd.visio" ".vst"="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/vnd.ms-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/vnd.ms-excel" ".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"
文件类型校验是确保文件上传的安全性和准确性的重要步骤。其中,文件类型校验可以通过检查文件名和文件头信息(也称为魔术数字)来实现。文件头信息是一些预定义的字节序列,用于标识特定的文件类型。 常见的文件头信息及其对应的文件类型如下: - 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
发出的红包

打赏作者

我的钱包空指针了

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

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

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

打赏作者

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

抵扣说明:

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

余额充值