Files
filestash/client/helpers/mimetype.js

217 lines
7.5 KiB
JavaScript

import Path from 'path';
export function getMimeType(file){
let ext = Path.extname(file).replace(/^\./, '').toLowerCase();
let mime = db[ext];
if(mime){
return mime;
}else{
return 'text/plain';
}
}
export function opener(file){
let mime = getMimeType(file);
if(mime.split('/')[0] === 'text'){
return 'editor';
}else if(mime === 'application/pdf'){
return 'pdf';
}else if(mime.split('/')[0] === 'image'){
return 'image';
}else if(['application/javascript', 'application/xml', 'application/json', 'application/x-perl'].indexOf(mime) !== -1){
return 'editor';
}else if(['audio/wav', 'audio/mp3', 'audio/flac'].indexOf(mime) !== -1){
return 'audio';
}else if(['video/webm', 'video/mp4', 'application/ogg'].indexOf(mime) !== -1){
return 'video';
}else{
return 'download';
}
}
const db = {
'pdf': 'application/pdf',
'csv': 'text/csv',
'gif': 'image/gif',
'bmp': 'image/bmp',
'jpg': 'image/jpeg',
'jpeg': 'image/jpeg',
'svg': 'image/svg',
'png': 'image/png',
'ico': 'image/x-icon',
'cab': 'application/vnd.ms-cab-compressed',
'mpeg': 'audio/mpeg',
'mpg': 'audio/mpeg',
'aif': 'audio/x-aiff',
'aiff': 'audio/x-aiff',
'ra': 'audio/x-pn-realaudio',
'ram': 'audio/x-pn-realaudio',
'wav': 'audio/wave',
'mp3': 'audio/mp3',
'flac': 'audio/flac',
'wma': 'audio/x-ms-wma',
'wmv': 'video/x-ms-wmv',
'webm': 'video/webm',
'mp4': 'video/mp4',
'mov': 'video/quicktime',
'avi': 'video/x-msvideo',
'ogg': 'application/ogg',
'ogv': 'application/ogg',
'js': 'application/javascript',
'xml': 'application/xml',
'deb': 'application/vnd.debian.binary-package',
'dpkg': 'application/dpkg-www-installer',
'rpm': 'application/x-rpm',
'apk': 'application/vnd.android.package-archive',
'exe': 'application/x-msdownload',
'msi': 'application/x-msdownload',
'dmg': 'application/x-apple-diskimage',
'pkg': 'application/x-newton-compatible-pkg',
'tar': 'application/x-tar',
'zip': 'application/x-zip',
'gz': 'application/x-gzip',
'bz2': 'application/x-bz2',
'rar': 'application/x-rar-compressed',
'so': 'application/octet-stream',
'eps': 'application/postscript',
'ps': 'application/postscript',
'midi': 'application/x-midi',
'odg': 'application/vnd.oasis.opendocument.graphics',
'odp': 'application/vnd.oasis.opendocument.presentation',
'ods': 'application/vnd.oasis.opendocument.spreadsheet',
'odt': 'application/vnd.oasis.opendocument.text',
'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'doc': 'application/msword',
'pps': 'application/vnd.ms-powerpoint',
'ppt': 'application/vnd.ms-powerpoint',
'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
'rtf': 'application/rtf',
'swf': 'application/x-shockwave-flash',
'vrml': 'application/x-vrml',
'wrl': 'x-world/x-vrml',
'xls': 'application/vnd.ms-excel',
'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'ds_store': 'application/octet-stream',
// FROM nginx
"html": "text/html",
"shtml": "text/html",
"htm": "text/html",
"css": "text/css",
"xml": "text/xml",
"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",
"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",
"ear": "application/java-archive",
"war": "application/java-archive",
"json": "application/json",
"hqx": "application/mac-binhex40",
"doc": "application/msword",
"ai": "application/postscript",
"m3u8": "application/vnd.apple.mpegurl",
"eot": "application/vnd.ms-fontobject",
"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",
"crt": "application/x-x509-ca-cert",
"pem": "application/x-x509-ca-cert",
"xpi": "application/x-xpinstall",
"xhtml": "application/xhtml+xml",
"xspf": "application/xspf+xml",
"zip": "application/zip",
"bin": "application/octet-stream",
"dll": "application/octet-stream",
"exe": "application/octet-stream",
"deb": "application/octet-stream",
"dmg": "application/octet-stream",
"iso": "application/octet-stream",
"img": "application/octet-stream",
"msi": "application/octet-stream",
"msm": "application/octet-stream",
"msp": "application/octet-stream",
"docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
"mid": "audio/midi",
"kar": "audio/midi",
"midi": "audio/midi",
"ogg": "audio/ogg",
"m4a": "audio/x-m4a",
"ra": "audio/x-realaudio",
"swf": "application/x-shockwave-flash",
"sit": "application/x-stuffit",
"tcl": "application/x-tcl",
"tk": "application/x-tcl",
"der": "application/x-x509-ca-cert",
"crt": "application/x-x509-ca-cert",
"pem": "application/x-x509-ca-cert",
"xpi": "application/x-xpinstall",
"xhtml": "application/xhtml+xml",
"xspf": "application/xspf+xml",
"zip": "application/zip",
"bin": "application/octet-stream",
"dll": "application/octet-stream",
"exe": "application/octet-stream",
"deb": "application/octet-stream",
"dmg": "application/octet-stream",
"iso": "application/octet-stream",
"img": "application/octet-stream",
"msi": "application/octet-stream",
"msm": "application/octet-stream",
"msp": "application/octet-stream",
"docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
"mid": "audio/midi",
"kar": "audio/midi",
"midi": "audio/midi",
"ogg": "audio/ogg",
"m4a": "audio/x-m4a",
"ra": "audio/x-realaudio",
"3gpp": "video/3gpp",
"3gp": "video/3gpp",
"ts": "video/mp2t",
"mp4": "video/mp4",
"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"
}