Minio存储相关功能优化建议

Blade 未结 0 68
yutons
yutons 剑者 2023-01-17 11:57

近期使用Bladex对接minio存储,发现通过Bladex上传的图片、文件等的contentType都是默认的application/octet-stream格式,无法直接预览,查看源码发现,在MinioTemplate中将contentType固定写成了application/octet-stream,建议修改支持自动识别文件格式!

image.png

示例代码如下:

public class MinioTemplate implements OssTemplate {


    /**
     * .........
     */

    @Override
    @SneakyThrows
    public BladeFile putFile(String bucketName, String fileName, InputStream stream) {
        return putFile(bucketName, fileName, stream, ViewContentType.getContentType(fileName));
    }
}


public enum ViewContentType {
    DEFAULT("default", "application/octet-stream"),
    A001("001", "application/x-001"),
    A301("301", "application/x-301"),
    A323("323", "text/h323"),
    A906("906", "application/x-906"),
    A907("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 String prefix;

    private String type;

    public static String getContentType(String prefix) {
        if (StrUtil.isEmpty(prefix)) {
            return DEFAULT.getType();
        }
        prefix = prefix.substring(prefix.lastIndexOf(".") + 1);
        for (ViewContentType value : ViewContentType.values()) {
            if (prefix.equalsIgnoreCase(value.getPrefix())) {
                return value.getType();
            }
        }
        return DEFAULT.getType();
    }

    ViewContentType(String prefix, String type) {
        this.prefix = prefix;
        this.type = type;
    }

    public String getPrefix() {
        return prefix;
    }

    public String getType() {
        return type;
    }
}


回答
  • 消灭零回复
提交回复