mirror of
https://github.com/mickael-kerjean/filestash.git
synced 2025-10-31 01:58:11 +08:00
217 lines
7.5 KiB
JavaScript
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"
|
|
}
|