vsd文件編輯方式:vsd格式用什麼文件

Mime Type(Content-Type)

MIME Type介紹 Content-Type 各種定義

多用途互聯網郵件擴展(MIME,Multipurpose Internet Mail Extensions)是一個互聯網標準,它擴展了電子郵件標準,使其能夠支持非ASCII字符、二進制格式附件等多種格式的郵件消息。在萬維網中使用的HTTP協議中也使用了MIME的框架,標準被擴展為互聯網媒體類型。通常來說,瀏覽器通過MIME Type區分不同的媒體資源。目前版本:1.0。

MIME Type是經由IETF組織協商,以RFC形式作為建議標準發佈在網上,通常只有一些在互聯網上獲得廣泛應用的格式才會獲得一個 MIME Type,如果是某個客戶端自己定義的格式,一般只能以application/x- 開頭。處理本地的文件,在沒有人告訴瀏覽器某個文件的MIME Type的情況下,瀏覽器也會做一些默認的處理,這可能和在操作系統中給文件配置的MIME Type有關。

在HTTP中,MIME Type類型被定義在Content-Type header中,每個MIME類型由3部分組成:Content-Type: [type]/[subtype],前者是數據大類別,後者定義具體的種類。

通過文件擴展名獲取ContentType

import lombok.Getter;
import org.apache.commons.lang3.StringUtils;

/**
 * 通過文件擴展名獲取ContentType
 */
@Getter
public enum MimeTypeEnum {

    AAC("acc", "AAC音頻", "audio/aac"),
    ABW("abw", "AbiWord文件", "application/x-abiword"),
    ARC("arc", "存檔文件", "application/x-freearc"),
    AVI("avi", "音頻視頻交錯格式", "video/x-msvideo"),
    AZW("azw", "亞馬遜Kindle電子書格式", "application/vnd.amazon.ebook"),
    BIN("bin", "任何類型的二進制數據", "application/octet-stream"),
    BMP("bmp", "Windows OS / 2位圖圖形", "image/bmp"),
    BZ("bz", "BZip存檔", "application/x-bzip"),
    BZ2("bz2", "BZip2存檔", "application/x-bzip2"),
    CSH("csh", "C-Shell腳本", "application/x-csh"),
    CSS("css", "級聯樣式表(CSS)", "text/css"),
    CSV("csv", "逗號分隔值(CSV)", "text/csv"),
    DOC("doc", "微軟Word文件", "application/msword"),
    DOCX("docx", "Microsoft Word(OpenXML)", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"),
    EOT("eot", "MS Embedded OpenType字體", "application/vnd.ms-fontobject"),
    EPUB("epub", "電子出版物(EPUB)", "application/epub+zip"),
    GZ("gz", "GZip壓縮檔案", "application/gzip"),
    GIF("gif", "圖形交換格式(GIF)", "image/gif"),
    HTM("htm", "超文本標記語言(HTML)", "text/html"),
    HTML("html", "超文本標記語言(HTML)", "text/html"),
    ICO("ico", "圖標格式", "image/vnd.microsoft.icon"),
    ICS("ics", "iCalendar格式", "text/calendar"),
    JAR("jar", "Java存檔", "application/java-archive"),
    JPEG("jpeg", "JPEG圖像", "image/jpeg"),
    JPG("jpg", "JPEG圖像", "image/jpeg"),
    JS("js", "JavaScript", "text/javascript"),
    JSON("json", "JSON格式", "application/json"),
    JSONLD("jsonld", "JSON-LD格式", "application/ld+json"),
    MID("mid", "樂器數字接口(MIDI)", "audio/midi"),
    MIDI("midi", "樂器數字接口(MIDI)", "audio/midi"),
    MJS("mjs", "JavaScript模塊", "text/javascript"),
    MP3("mp3", "MP3音頻", "audio/mpeg"),
    MPEG("mpeg", "MPEG視頻", "video/mpeg"),
    MPKG("mpkg", "蘋果安裝程序包", "application/vnd.apple.installer+xml"),
    ODP("odp", "OpenDocument演示文稿文檔", "application/vnd.oasis.opendocument.presentation"),
    ODS("ods", "OpenDocument電子表格文檔", "application/vnd.oasis.opendocument.spreadsheet"),
    ODT("odt", "OpenDocument文字文件", "application/vnd.oasis.opendocument.text"),
    OGA("oga", "OGG音訊", "audio/ogg"),
    OGV("ogv", "OGG視頻", "video/ogg"),
    OGX("ogx", "OGG", "application/ogg"),
    OPUS("opus", "OPUS音頻", "audio/opus"),
    OTF("otf", "otf字體", "font/otf"),
    PNG("png", "便攜式網絡圖形", "image/png"),
    PDF("pdf", "Adobe 可移植文檔格式(PDF)", "application/pdf"),
    PHP("php", "php", "application/x-httpd-php"),
    PPT("ppt", "Microsoft PowerPoint", "application/vnd.ms-powerpoint"),
    PPTX("pptx", "Microsoft PowerPoint(OpenXML)", "application/vnd.openxmlformats-officedocument.presentationml.presentation"),
    RAR("rar", "RAR檔案", "application/vnd.rar"),
    RTF("rtf", "富文本格式", "application/rtf"),
    SH("sh", "Bourne Shell腳本", "application/x-sh"),
    SVG("svg", "可縮放矢量圖形(SVG)", "image/svg+xml"),
    SWF("swf", "小型Web格式(SWF)或Adobe Flash文檔", "application/x-shockwave-flash"),
    TAR("tar", "磁帶存檔(TAR)", "application/x-tar"),
    TIF("tif", "標記圖像文件格式(TIFF)", "image/tiff"),
    TIFF("tiff", "標記圖像文件格式(TIFF)", "image/tiff"),
    TS("ts", "MPEG傳輸流", "video/mp2t"),
    TTF("ttf", "ttf字體", "font/ttf"),
    TXT("txt", "文本(通常為ASCII或ISO 8859- n", "text/plain"),
    VSD("vsd", "微軟Visio", "application/vnd.visio"),
    WAV("wav", "波形音頻格式", "audio/wav"),
    WEBA("weba", "WEBM音頻", "audio/webm"),
    WEBM("webm", "WEBM視頻", "video/webm"),
    WEBP("webp", "WEBP圖像", "image/webp"),
    WOFF("woff", "Web開放字體格式(WOFF)", "font/woff"),
    WOFF2("woff2", "Web開放字體格式(WOFF)", "font/woff2"),
    XHTML("xhtml", "XHTML", "application/xhtml+xml"),
    XLS("xls", "微軟Excel", "application/vnd.ms-excel"),
    XLSX("xlsx", "微軟Excel(OpenXML)", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"),
    XML("xml", "XML", "application/xml"),
    XUL("xul", "XUL", "application/vnd.mozilla.xul+xml"),
    ZIP("zip", "ZIP", "application/zip"),
    MIME_3GP("3gp", "3GPP audio/video container", "video/3gpp"),
    MIME_3GP_WITHOUT_VIDEO("3gp", "3GPP audio/video container doesn't contain video", "audio/3gpp2"),
    MIME_3G2("3g2", "3GPP2 audio/video container", "video/3gpp2"),
    MIME_3G2_WITHOUT_VIDEO("3g2", "3GPP2 audio/video container  doesn't contain video", "audio/3gpp2"),
    MIME_7Z("7z", "7-zip存檔", "application/x-7z-compressed");

    //擴展名
    private final String extension;
    //說明
    private final String explain;
    //contentType/mime類型
    private final String mimeType;

    /**
     * @param extension 上傳的文件擴展名
     * @param explain   類型說明
     * @param mimeType  Mime對應的類型
     */
    MimeTypeEnum(String extension, String explain, String mimeType) {
        this.extension = extension;
        this.explain = explain;
        this.mimeType = mimeType;
    }

    /**
     * 通過擴展名獲取枚舉類型
     *
     * @param extension 擴展名
     * @return 枚舉類
     */
    public static MimeTypeEnum getByExtension(String extension) {
        if (StringUtils.isEmpty(extension)) {
            return null;
        }
        for (MimeTypeEnum typesEnum : MimeTypeEnum.values()) {
            if (extension.equals(typesEnum.getExtension())) {
                return typesEnum;
            }
        }
        return null;
    }

    /**
     * Content-Type常用對照
     * 根據後綴獲取Mime
     *
     * @param fileType 擴展名
     * @return mime類型
     */
    public static String getContentType(String fileType) {
        MimeTypeEnum mimeTypeEnum = MimeTypeEnum.getByExtension(fileType);
        if (mimeTypeEnum != null) {
            return mimeTypeEnum.getMimeType();
        }
        return "application/octet-stream";
    }

}

根據文件獲取MimeType的幾種方式

<!-- hutool-all -->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.6.5</version>
</dependency>
<!-- commons.lang3-->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.7</version>
</dependency>
<!-- fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.79</version>
</dependency>
<dependency>
    <groupId>net.sf.jmimemagic</groupId>
    <artifactId>jmimemagic</artifactId>
    <version>0.1.4</version>
</dependency>
import cn.hutool.core.io.FileUtil;
import net.sf.jmimemagic.*;

import javax.activation.MimetypesFileTypeMap;
import java.io.File;
import java.io.IOException;
import java.net.FileNameMap;
import java.net.URLConnection;
import java.nio.file.Files;

public class MimeTypeDemo {

    public static void main(String[] args) {
        File file = FileUtil.file("d:/001.jpg");
        // 第一種方式
        String mimeType1 = "";
        try {
            Magic parser = new Magic();
            MagicMatch match = parser.getMagicMatch(file, false);
            mimeType1 = match.getMimeType();
        } catch (MagicParseException e) {
            e.printStackTrace();
        } catch (MagicMatchNotFoundException e) {
            e.printStackTrace();
        } catch (MagicException e) {
            e.printStackTrace();
        }
        System.out.println("第一種方式: " + mimeType1);
        // 第二種方式
        String mimeType2 = new MimetypesFileTypeMap().getContentType(file);
        System.out.println("第二種方式: " + mimeType2);
        // 第三種方式
        String mimeType3 = "";
        try {
            mimeType3 = Files.probeContentType(file.toPath());
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("第三種方式: " + mimeType3);
        //  第四種方式
        FileNameMap fileNameMap = URLConnection.getFileNameMap();
        String mimeType4 = fileNameMap.getContentTypeFor(file.getParent());
        System.out.println("第四種方式: " + mimeType4);

        // 通過文件擴展名獲取ContentType
        MimeTypeEnum mimeTypeEnum = MimeTypeEnum.getByExtension("jpg");
        System.out.println(mimeTypeEnum.getExplain()+ " , "+mimeTypeEnum.getMimeType()+ " , "+mimeTypeEnum.getExtension());
    }

}

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/222370.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 14:09
下一篇 2024-12-09 14:09

相關推薦

發表回復

登錄後才能評論