getMIMETypeFromExtension function

String getMIMETypeFromExtension(
  1. String extension
)

Returns the MIME type for the given file extension.

Implementation

String getMIMETypeFromExtension(String extension) {
  // list from https://codex.wordpress.org/Function_Reference/get_allowed_mime_types
  switch (extension.toLowerCase()) {
    case 'jpg':
    case 'jpeg':
    case 'jpe':
      return 'image/jpeg';
    case 'gif':
      return 'image/gif';
    case 'png':
      return 'image/png';
    case 'bmp':
      return 'image/bmp';
    case 'tif':
      return 'image/tif';
    case 'ico':
      return 'image/x-icon';

    case 'asf':
    case 'asx':
      return 'video/x-ms-asf';
    case 'wmv':
      return 'video/x-ms-wmv';
    case 'wmx':
      return 'video/x-ms-wmx';
    case 'wm':
      return 'video/x-ms-wm';
    case 'avi':
      return 'video/avi';
    case 'divx':
      return 'video/divx';
    case 'flv':
      return 'video/x-flv';

    case 'mov':
    case 'qt':
      return 'video/quicktime';
    case 'mpeg':
    case 'mpg':
    case 'mpe':
      return 'video/mpeg';
    case 'mp4':
    case 'm4v':
      return 'video/mp4';
    case 'ogv':
      return 'video/ogg';
    case 'webm':
      return 'video/webm';
    case 'mkv':
      return 'video/x-matroska';
    case 'txt':
    case 'asc':
    case 'c':
    case 'cc':
    case 'h':
      return 'text/plain';
    case 'csv':
      return 'text/csv';
    case 'tsv':
      return 'text/tab-separated-values';
    case 'ics':
      return 'text/calendar';
    case 'rtx':
      return 'text/richtext';
    case 'css':
      return 'text/css';
    case 'html':
    case 'htm':
      return 'text/html';
    case 'mp3':
    case 'm4a':
    case 'm4b':
      return 'audio/mpeg';
    case 'ra':
    case 'ram':
      return 'audio/x-realaudio';
    case 'wav':
      return 'audio/wav';
    case 'ogg':
    case 'oga':
      return 'audio/ogg';
    case 'mid':
    case 'midi':
      return 'audio/midi';
    case 'wma':
      return 'audio/x-ms-wma';
    case 'wax':
      return 'audio/x-ms-wax';
    case 'mka':
      return 'audio/x-matroska';
    case 'rtf':
      return 'application/rtf';
    case 'js':
      return 'application/javascript';
    case 'pdf':
      return 'application/pdf';
    case 'swf':
      return 'application/x-shockwave-flash';
    case 'class':
      return 'application/java';
    case 'tar':
      return 'application/x-tar';
    case 'zip':
      return 'application/zip';
    case 'gz':
    case 'gzip':
      return 'application/x-gzip';
    case 'rar':
      return 'application/rar';
    case '7z':
      return 'application/x-7z-compressed';
    case 'exe':
      return 'application/x-msdownload';
    case 'doc':
      return 'application/msword';
    case 'pot':
    case 'pps':
    case 'ppt':
      return 'application/vnd.ms-powerpoint';
    case 'wri':
      return 'application/vnd.ms-write';
    case 'xla':
    case 'xls':
    case 'xlt':
    case 'xlw':
      return 'application/vnd.ms-excel';
    case 'mdb':
      return 'application/vnd.ms-access';
    case 'mpp':
      return 'application/vnd.ms-project';
    case 'docx':
      return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
    case 'docm':
      return 'application/vnd.ms-word.document.macroEnabled.12';
    case 'dotx':
      return 'application/vnd.openxmlformats-officedocument.wordprocessingml.template';
    case 'xlsx':
      return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
    case 'xmlsm':
      return 'application/vnd.ms-excel.sheet.macroEnabled.12';
    case 'xlsb':
      return 'application/vnd.ms-excel.sheet.binary.macroEnabled.12';
    case 'xltx':
      return 'application/vnd.openxmlformats-officedocument.spreadsheetml.template';
    case 'xltm':
      return 'application/vnd.ms-excel.template.macroEnabled.12';
    case 'xlam':
      return 'application/vnd.ms-excel.addin.macroEnabled.12';
    case 'pptx':
      return 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
    case 'pptm':
      return 'application/vnd.ms-powerpoint.presentation.macroEnabled.12';
    case 'ppsx':
      return 'application/vnd.openxmlformats-officedocument.presentationml.slideshow';
    case 'ppsm':
      return 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12';
    case 'potx':
      return 'application/vnd.openxmlformats-officedocument.presentationml.template';
    case 'potm':
      return 'application/vnd.ms-powerpoint.template.macroEnabled.12';
    case 'ppam':
      return 'application/vnd.ms-powerpoint.addin.macroEnabled.12';
    case 'sldx':
      return 'application/vnd.openxmlformats-officedocument.presentationml.slide';
    case 'sldm':
      return 'application/vnd.ms-powerpoint.slide.macroEnabled.12';

    case 'onetoc':
    case 'onetoc2':
    case 'onetmp':
    case 'onepkg':
      return 'application/onenote';
    case 'odt':
      return 'application/vnd.oasis.opendocument.text';
    case 'odp':
      return 'application/vnd.oasis.opendocument.presentation';
    case 'ods':
      return 'application/vnd.oasis.opendocument.spreadsheet';
    case 'odg':
      return 'application/vnd.oasis.opendocument.graphics';
    case 'odc':
      return 'application/vnd.oasis.opendocument.chart';
    case 'odb':
      return 'application/vnd.oasis.opendocument.database';
    case 'odf':
      return 'application/vnd.oasis.opendocument.formula';
    case 'wp':
    case 'wpd':
      return 'application/wordperfect';
    case 'key':
      return 'application/vnd.apple.keynote';
    case 'numbers':
      return 'application/vnd.apple.numbers';
    case 'pages':
      return 'application/vnd.apple.pages';
    case 'kmz':
    case 'kml':
      return 'application/octet-stream';
    default:
      return 'text/plain';
  }
}