Path extension and MIME type of file in swift Path extension and MIME type of file in swift ios ios

Path extension and MIME type of file in swift


If anyone wants to get the MimeType from the actual URL of the file this code worked for me:

import MobileCoreServicesfunc mimeTypeForPath(path: String) -> String {    let url = NSURL(fileURLWithPath: path)    let pathExtension = url.pathExtension    if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension! as NSString, nil)?.takeRetainedValue() {        if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {            return mimetype as String        }    }    return "application/octet-stream"}


If you need to check URL contains some Image or Audio file or Video file, here is Swift 5.1 code:

import Foundationimport MobileCoreServicesextension URL {    func mimeType() -> String {        let pathExtension = self.pathExtension        if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue() {            if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {                return mimetype as String            }        }        return "application/octet-stream"    }    var containsImage: Bool {        let mimeType = self.mimeType()        guard let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, mimeType as CFString, nil)?.takeRetainedValue() else {            return false        }        return UTTypeConformsTo(uti, kUTTypeImage)    }    var containsAudio: Bool {        let mimeType = self.mimeType()        guard let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, mimeType as CFString, nil)?.takeRetainedValue() else {            return false        }        return UTTypeConformsTo(uti, kUTTypeAudio)    }    var containsVideo: Bool {        let mimeType = self.mimeType()        guard  let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, mimeType as CFString, nil)?.takeRetainedValue() else {            return false        }        return UTTypeConformsTo(uti, kUTTypeMovie)    }}


Use the following code

MimeType.swift

import Foundationinternal let DEFAULT_MIME_TYPE = "application/octet-stream"internal let mimeTypes = [    "html": "text/html",    "htm": "text/html",    "shtml": "text/html",    "css": "text/css",    "xml": "text/xml",    "gif": "image/gif",    "jpeg": "image/jpeg",    "jpg": "image/jpeg",    "js": "application/javascript",    "atom": "application/atom+xml",    "rss": "application/rss+xml",    "mml": "text/mathml",    "txt": "text/plain",    "jad": "text/vnd.sun.j2me.app-descriptor",    "wml": "text/vnd.wap.wml",    "htc": "text/x-component",    "png": "image/png",    "tif": "image/tiff",    "tiff": "image/tiff",    "wbmp": "image/vnd.wap.wbmp",    "ico": "image/x-icon",    "jng": "image/x-jng",    "bmp": "image/x-ms-bmp",    "svg": "image/svg+xml",    "svgz": "image/svg+xml",    "webp": "image/webp",    "woff": "application/font-woff",    "jar": "application/java-archive",    "war": "application/java-archive",    "ear": "application/java-archive",    "json": "application/json",    "hqx": "application/mac-binhex40",    "doc": "application/msword",    "pdf": "application/pdf",    "ps": "application/postscript",    "eps": "application/postscript",    "ai": "application/postscript",    "rtf": "application/rtf",    "m3u8": "application/vnd.apple.mpegurl",    "xls": "application/vnd.ms-excel",    "eot": "application/vnd.ms-fontobject",    "ppt": "application/vnd.ms-powerpoint",    "wmlc": "application/vnd.wap.wmlc",    "kml": "application/vnd.google-earth.kml+xml",    "kmz": "application/vnd.google-earth.kmz",    "7z": "application/x-7z-compressed",    "cco": "application/x-cocoa",    "jardiff": "application/x-java-archive-diff",    "jnlp": "application/x-java-jnlp-file",    "run": "application/x-makeself",    "pl": "application/x-perl",    "pm": "application/x-perl",    "prc": "application/x-pilot",    "pdb": "application/x-pilot",    "rar": "application/x-rar-compressed",    "rpm": "application/x-redhat-package-manager",    "sea": "application/x-sea",    "swf": "application/x-shockwave-flash",    "sit": "application/x-stuffit",    "tcl": "application/x-tcl",    "tk": "application/x-tcl",    "der": "application/x-x509-ca-cert",    "pem": "application/x-x509-ca-cert",    "crt": "application/x-x509-ca-cert",    "xpi": "application/x-xpinstall",    "xhtml": "application/xhtml+xml",    "xspf": "application/xspf+xml",    "zip": "application/zip",    "epub": "application/epub+zip",    "docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",    "xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",    "pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",    "mid": "audio/midi",    "midi": "audio/midi",    "kar": "audio/midi",    "mp3": "audio/mpeg",    "ogg": "audio/ogg",    "m4a": "audio/x-m4a",    "ra": "audio/x-realaudio",    "3gpp": "video/3gpp",    "3gp": "video/3gpp",    "ts": "video/mp2t",    "mp4": "video/mp4",    "mpeg": "video/mpeg",    "mpg": "video/mpeg",    "mov": "video/quicktime",    "webm": "video/webm",    "flv": "video/x-flv",    "m4v": "video/x-m4v",    "mng": "video/x-mng",    "asx": "video/x-ms-asf",    "asf": "video/x-ms-asf",    "wmv": "video/x-ms-wmv",    "avi": "video/x-msvideo"]internal func MimeType(ext: String?) -> String {    return mimeTypes[ext?.lowercased() ?? "" ] ?? DEFAULT_MIME_TYPE}extension NSURL {    public func mimeType() -> String {        return MimeType(ext: self.pathExtension)    }}extension URL {    public func mimeType() -> String {        return MimeType(ext: self.pathExtension)    }}extension NSString {    public func mimeType() -> String {        return MimeType(ext: self.pathExtension)    }}extension String {    public func mimeType() -> String {        return (self as NSString).mimeType()    }}

How to use

let string = "https://homepages.cae.wisc.edu/~ece533/images/boat.png"let mimeType = string.mimeType()

Workes with NSURL, URL, NSString, String

Reference: https://gist.github.com/ngs/918b07f448977789cf69