-- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich -- Licensed to the public under the Apache License 2.0. -- This class provides functions to guess mime types from file extensions and -- vice versa. module("luci.http.mime", package.seeall) require("luci.util") MIME_TYPES = { ["txt"] = "text/plain"; ["js"] = "text/javascript"; ["css"] = "text/css"; ["htm"] = "text/html"; ["html"] = "text/html"; ["patch"] = "text/x-patch"; ["c"] = "text/x-csrc"; ["h"] = "text/x-chdr"; ["o"] = "text/x-object"; ["ko"] = "text/x-object"; ["bmp"] = "image/bmp"; ["gif"] = "image/gif"; ["png"] = "image/png"; ["jpg"] = "image/jpeg"; ["jpeg"] = "image/jpeg"; ["svg"] = "image/svg+xml"; ["zip"] = "application/zip"; ["pdf"] = "application/pdf"; ["xml"] = "application/xml"; ["xsl"] = "application/xml"; ["doc"] = "application/msword"; ["ppt"] = "application/vnd.ms-powerpoint"; ["xls"] = "application/vnd.ms-excel"; ["odt"] = "application/vnd.oasis.opendocument.text"; ["odp"] = "application/vnd.oasis.opendocument.presentation"; ["pl"] = "application/x-perl"; ["sh"] = "application/x-shellscript"; ["php"] = "application/x-php"; ["deb"] = "application/x-deb"; ["iso"] = "application/x-cd-image"; ["tgz"] = "application/x-compressed-tar"; ["mp3"] = "audio/mpeg"; ["ogg"] = "audio/x-vorbis+ogg"; ["wav"] = "audio/x-wav"; ["aac"] = "audio/aac"; ["mpg"] = "video/mpeg"; ["mpeg"] = "video/mpeg"; ["avi"] = "video/x-msvideo"; ["mov"] = "video/quicktime"; ["mp4"] = "video/mp4"; } -- "application/octet-stream" if the extension is unknown. function to_mime(filename) if type(filename) == "string" then local ext = filename:match("[^%.]+$") if ext and MIME_TYPES[ext:lower()] then return MIME_TYPES[ext:lower()] end end return "application/octet-stream" end -- given mime-type is unknown. function to_ext(mimetype) if type(mimetype) == "string" then for ext, type in luci.util.kspairs( MIME_TYPES ) do if type == mimetype then return ext end end end return nil end