UNPKG

@ottimis/ng2-file-upload

Version:
171 lines 17.8 kB
export class FileType { static getMimeClass(file) { let mimeClass = "application"; if (file?.type && this.mime_psd.indexOf(file.type) !== -1) { mimeClass = "image"; } else if (file?.type?.match("image.*")) { mimeClass = "image"; } else if (file?.type?.match("video.*")) { mimeClass = "video"; } else if (file?.type?.match("audio.*")) { mimeClass = "audio"; } else if (file?.type === "application/pdf") { mimeClass = "pdf"; } else if (file?.type && this.mime_compress.indexOf(file.type) !== -1) { mimeClass = "compress"; } else if (file?.type && this.mime_doc.indexOf(file.type) !== -1) { mimeClass = "doc"; } else if (file?.type && this.mime_xsl.indexOf(file.type) !== -1) { mimeClass = "xls"; } else if (file?.type && this.mime_ppt.indexOf(file.type) !== -1) { mimeClass = "ppt"; } if (mimeClass === "application" && file?.name) { mimeClass = this.fileTypeDetection(file.name); } return mimeClass; } static fileTypeDetection(inputFilename) { const types = { jpg: "image", jpeg: "image", tif: "image", psd: "image", bmp: "image", png: "image", nef: "image", tiff: "image", cr2: "image", dwg: "image", cdr: "image", ai: "image", indd: "image", pin: "image", cdp: "image", skp: "image", stp: "image", "3dm": "image", mp3: "audio", wav: "audio", wma: "audio", mod: "audio", m4a: "audio", compress: "compress", zip: "compress", rar: "compress", "7z": "compress", lz: "compress", z01: "compress", bz2: "compress", gz: "compress", pdf: "pdf", xls: "xls", xlsx: "xls", ods: "xls", mp4: "video", avi: "video", wmv: "video", mpg: "video", mts: "video", flv: "video", "3gp": "video", vob: "video", m4v: "video", mpeg: "video", m2ts: "video", mov: "video", doc: "doc", docx: "doc", eps: "doc", txt: "doc", odt: "doc", rtf: "doc", ppt: "ppt", pptx: "ppt", pps: "ppt", ppsx: "ppt", odp: "ppt", }; const chunks = inputFilename.split("."); if (chunks.length < 2) { return "application"; } const extension = chunks[chunks.length - 1].toLowerCase(); if (types[extension] === undefined) { return "application"; } else { return types[extension]; } } } /* MS office */ // tslint:disable-next-line:variable-name FileType.mime_doc = [ "application/msword", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/vnd.openxmlformats-officedocument.wordprocessingml.template", "application/vnd.ms-word.document.macroEnabled.12", "application/vnd.ms-word.template.macroEnabled.12", ]; // tslint:disable-next-line:variable-name FileType.mime_xsl = [ "application/vnd.ms-excel", "application/vnd.ms-excel", "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "application/vnd.openxmlformats-officedocument.spreadsheetml.template", "application/vnd.ms-excel.sheet.macroEnabled.12", "application/vnd.ms-excel.template.macroEnabled.12", "application/vnd.ms-excel.addin.macroEnabled.12", "application/vnd.ms-excel.sheet.binary.macroEnabled.12", ]; // tslint:disable-next-line:variable-name FileType.mime_ppt = [ "application/vnd.ms-powerpoint", "application/vnd.ms-powerpoint", "application/vnd.ms-powerpoint", "application/vnd.ms-powerpoint", "application/vnd.openxmlformats-officedocument.presentationml.presentation", "application/vnd.openxmlformats-officedocument.presentationml.template", "application/vnd.openxmlformats-officedocument.presentationml.slideshow", "application/vnd.ms-powerpoint.addin.macroEnabled.12", "application/vnd.ms-powerpoint.presentation.macroEnabled.12", "application/vnd.ms-powerpoint.presentation.macroEnabled.12", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12", ]; /* PSD */ // tslint:disable-next-line:variable-name FileType.mime_psd = [ "image/photoshop", "image/x-photoshop", "image/psd", "application/photoshop", "application/psd", "zz-application/zz-winassoc-psd", ]; /* Compressed files */ // tslint:disable-next-line:variable-name FileType.mime_compress = [ "application/x-gtar", "application/x-gcompress", "application/compress", "application/x-tar", "application/x-rar-compressed", "application/octet-stream", "application/x-zip-compressed", "application/zip-compressed", "application/x-7z-compressed", "application/gzip", "application/x-bzip2", ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZzItZmlsZS11cGxvYWQvZmlsZS11cGxvYWQvZmlsZS10eXBlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxRQUFRO0lBaUVuQixNQUFNLENBQUMsWUFBWSxDQUFDLElBQW9CO1FBQ3RDLElBQUksU0FBUyxHQUFHLGFBQWEsQ0FBQztRQUM5QixJQUFJLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3pELFNBQVMsR0FBRyxPQUFPLENBQUM7U0FDckI7YUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3ZDLFNBQVMsR0FBRyxPQUFPLENBQUM7U0FDckI7YUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3ZDLFNBQVMsR0FBRyxPQUFPLENBQUM7U0FDckI7YUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3ZDLFNBQVMsR0FBRyxPQUFPLENBQUM7U0FDckI7YUFBTSxJQUFJLElBQUksRUFBRSxJQUFJLEtBQUssaUJBQWlCLEVBQUU7WUFDM0MsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUNuQjthQUFNLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDckUsU0FBUyxHQUFHLFVBQVUsQ0FBQztTQUN4QjthQUFNLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8s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QW9CO0lBQ3BCLHlCQUF5QjtJQUN6QixzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLDhCQUE4QjtJQUM5QiwwQkFBMEI7SUFDMUIsOEJBQThCO0lBQzlCLDRCQUE0QjtJQUM1Qiw2QkFBNkI7SUFDN0Isa0JBQWtCO0lBQ2xCLHFCQUFxQjtDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsZUxpa2VPYmplY3QgfSBmcm9tIFwiLi4vaW5kZXhcIjtcblxuZXhwb3J0IGNsYXNzIEZpbGVUeXBlIHtcbiAgLyogIE1TIG9mZmljZSAgKi9cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgc3RhdGljIG1pbWVfZG9jOiBzdHJpbmdbXSA9IFtcbiAgICBcImFwcGxpY2F0aW9uL21zd29yZFwiLFxuICAgIFwiYXBwbGljYXRpb24vbXN3b3JkXCIsXG4gICAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudFwiLFxuICAgIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwudGVtcGxhdGVcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13b3JkLmRvY3VtZW50Lm1hY3JvRW5hYmxlZC4xMlwiLFxuICAgIFwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQudGVtcGxhdGUubWFjcm9FbmFibGVkLjEyXCIsXG4gIF07XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHN0YXRpYyBtaW1lX3hzbDogc3RyaW5nW10gPSBbXG4gICAgXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiLFxuICAgIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCIsXG4gICAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldFwiLFxuICAgIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGVtcGxhdGVcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb0VuYWJsZWQuMTJcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50ZW1wbGF0ZS5tYWNyb0VuYWJsZWQuMTJcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb0VuYWJsZWQuMTJcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9FbmFibGVkLjEyXCIsXG4gIF07XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHN0YXRpYyBtaW1lX3BwdDogc3RyaW5nW10gPSBbXG4gICAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludFwiLFxuICAgIFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnRcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50XCIsXG4gICAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludFwiLFxuICAgIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvblwiLFxuICAgIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnRlbXBsYXRlXCIsXG4gICAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVzaG93XCIsXG4gICAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5hZGRpbi5tYWNyb0VuYWJsZWQuMTJcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnByZXNlbnRhdGlvbi5tYWNyb0VuYWJsZWQuMTJcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnByZXNlbnRhdGlvbi5tYWNyb0VuYWJsZWQuMTJcIixcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnNsaWRlc2hvdy5tYWNyb0VuYWJsZWQuMTJcIixcbiAgXTtcblxuICAvKiBQU0QgKi9cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgc3RhdGljIG1pbWVfcHNkOiBzdHJpbmdbXSA9IFtcbiAgICBcImltYWdlL3Bob3Rvc2hvcFwiLFxuICAgIFwiaW1hZ2UveC1waG90b3Nob3BcIixcbiAgICBcImltYWdlL3BzZFwiLFxuICAgIFwiYXBwbGljYXRpb24vcGhvdG9zaG9wXCIsXG4gICAgXCJhcHBsaWNhdGlvbi9wc2RcIixcbiAgICBcInp6LWFwcGxpY2F0aW9uL3p6LXdpbmFzc29jLXBzZFwiLFxuICBdO1xuXG4gIC8qIENvbXByZXNzZWQgZmlsZXMgKi9cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgc3RhdGljIG1pbWVfY29tcHJlc3M6IHN0cmluZ1tdID0gW1xuICAgIFwiYXBwbGljYXRpb24veC1ndGFyXCIsXG4gICAgXCJhcHBsaWNhdGlvbi94LWdjb21wcmVzc1wiLFxuICAgIFwiYXBwbGljYXRpb24vY29tcHJlc3NcIixcbiAgICBcImFwcGxpY2F0aW9uL3gtdGFyXCIsXG4gICAgXCJhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkXCIsXG4gICAgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIixcbiAgICBcImFwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWRcIixcbiAgICBcImFwcGxpY2F0aW9uL3ppcC1jb21wcmVzc2VkXCIsXG4gICAgXCJhcHBsaWNhdGlvbi94LTd6LWNvbXByZXNzZWRcIixcbiAgICBcImFwcGxpY2F0aW9uL2d6aXBcIixcbiAgICBcImFwcGxpY2F0aW9uL3gtYnppcDJcIixcbiAgXTtcblxuICBzdGF0aWMgZ2V0TWltZUNsYXNzKGZpbGU6IEZpbGVMaWtlT2JqZWN0KTogc3RyaW5nIHtcbiAgICBsZXQgbWltZUNsYXNzID0gXCJhcHBsaWNhdGlvblwiO1xuICAgIGlmIChmaWxlPy50eXBlICYmIHRoaXMubWltZV9wc2QuaW5kZXhPZihmaWxlLnR5cGUpICE9PSAtMSkge1xuICAgICAgbWltZUNsYXNzID0gXCJpbWFnZVwiO1xuICAgIH0gZWxzZSBpZiAoZmlsZT8udHlwZT8ubWF0Y2goXCJpbWFnZS4qXCIpKSB7XG4gICAgICBtaW1lQ2xhc3MgPSBcImltYWdlXCI7XG4gICAgfSBlbHNlIGlmIChmaWxlPy50eXBlPy5tYXRjaChcInZpZGVvLipcIikpIHtcbiAgICAgIG1pbWVDbGFzcyA9IFwidmlkZW9cIjtcbiAgICB9IGVsc2UgaWYgKGZpbGU/LnR5cGU/Lm1hdGNoKFwiYXVkaW8uKlwiKSkge1xuICAgICAgbWltZUNsYXNzID0gXCJhdWRpb1wiO1xuICAgIH0gZWxzZSBpZiAoZmlsZT8udHlwZSA9PT0gXCJhcHBsaWNhdGlvbi9wZGZcIikge1xuICAgICAgbWltZUNsYXNzID0gXCJwZGZcIjtcbiAgICB9IGVsc2UgaWYgKGZpbGU/LnR5cGUgJiYgdGhpcy5taW1lX2NvbXByZXNzLmluZGV4T2YoZmlsZS50eXBlKSAhPT0gLTEpIHtcbiAgICAgIG1pbWVDbGFzcyA9IFwiY29tcHJlc3NcIjtcbiAgICB9IGVsc2UgaWYgKGZpbGU/LnR5cGUgJiYgdGhpcy5taW1lX2RvYy5pbmRleE9mKGZpbGUudHlwZSkgIT09IC0xKSB7XG4gICAgICBtaW1lQ2xhc3MgPSBcImRvY1wiO1xuICAgIH0gZWxzZSBpZiAoZmlsZT8udHlwZSAmJiB0aGlzLm1pbWVfeHNsLmluZGV4T2YoZmlsZS50eXBlKSAhPT0gLTEpIHtcbiAgICAgIG1pbWVDbGFzcyA9IFwieGxzXCI7XG4gICAgfSBlbHNlIGlmIChmaWxlPy50eXBlICYmIHRoaXMubWltZV9wcHQuaW5kZXhPZihmaWxlLnR5cGUpICE9PSAtMSkge1xuICAgICAgbWltZUNsYXNzID0gXCJwcHRcIjtcbiAgICB9XG4gICAgaWYgKG1pbWVDbGFzcyA9PT0gXCJhcHBsaWNhdGlvblwiICYmIGZpbGU/Lm5hbWUpIHtcbiAgICAgIG1pbWVDbGFzcyA9IHRoaXMuZmlsZVR5cGVEZXRlY3Rpb24oZmlsZS5uYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWltZUNsYXNzO1xuICB9XG5cbiAgc3RhdGljIGZpbGVUeXBlRGV0ZWN0aW9uKGlucHV0RmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdHlwZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICBqcGc6IFwiaW1hZ2VcIixcbiAgICAgIGpwZWc6IFwiaW1hZ2VcIixcbiAgICAgIHRpZjogXCJpbWFnZVwiLFxuICAgICAgcHNkOiBcImltYWdlXCIsXG4gICAgICBibXA6IFwiaW1hZ2VcIixcbiAgICAgIHBuZzogXCJpbWFnZVwiLFxuICAgICAgbmVmOiBcImltYWdlXCIsXG4gICAgICB0aWZmOiBcImltYWdlXCIsXG4gICAgICBjcjI6IFwiaW1hZ2VcIixcbiAgICAgIGR3ZzogXCJpbWFnZVwiLFxuICAgICAgY2RyOiBcImltYWdlXCIsXG4gICAgICBhaTogXCJpbWFnZVwiLFxuICAgICAgaW5kZDogXCJpbWFnZVwiLFxuICAgICAgcGluOiBcImltYWdlXCIsXG4gICAgICBjZHA6IFwiaW1hZ2VcIixcbiAgICAgIHNrcDogXCJpbWFnZVwiLFxuICAgICAgc3RwOiBcImltYWdlXCIsXG4gICAgICBcIjNkbVwiOiBcImltYWdlXCIsXG4gICAgICBtcDM6IFwiYXVkaW9cIixcbiAgICAgIHdhdjogXCJhdWRpb1wiLFxuICAgICAgd21hOiBcImF1ZGlvXCIsXG4gICAgICBtb2Q6IFwiYXVkaW9cIixcbiAgICAgIG00YTogXCJhdWRpb1wiLFxuICAgICAgY29tcHJlc3M6IFwiY29tcHJlc3NcIixcbiAgICAgIHppcDogXCJjb21wcmVzc1wiLFxuICAgICAgcmFyOiBcImNvbXByZXNzXCIsXG4gICAgICBcIjd6XCI6IFwiY29tcHJlc3NcIixcbiAgICAgIGx6OiBcImNvbXByZXNzXCIsXG4gICAgICB6MDE6IFwiY29tcHJlc3NcIixcbiAgICAgIGJ6MjogXCJjb21wcmVzc1wiLFxuICAgICAgZ3o6IFwiY29tcHJlc3NcIixcbiAgICAgIHBkZjogXCJwZGZcIixcbiAgICAgIHhsczogXCJ4bHNcIixcbiAgICAgIHhsc3g6IFwieGxzXCIsXG4gICAgICBvZHM6IFwieGxzXCIsXG4gICAgICBtcDQ6IFwidmlkZW9cIixcbiAgICAgIGF2aTogXCJ2aWRlb1wiLFxuICAgICAgd212OiBcInZpZGVvXCIsXG4gICAgICBtcGc6IFwidmlkZW9cIixcbiAgICAgIG10czogXCJ2aWRlb1wiLFxuICAgICAgZmx2OiBcInZpZGVvXCIsXG4gICAgICBcIjNncFwiOiBcInZpZGVvXCIsXG4gICAgICB2b2I6IFwidmlkZW9cIixcbiAgICAgIG00djogXCJ2aWRlb1wiLFxuICAgICAgbXBlZzogXCJ2aWRlb1wiLFxuICAgICAgbTJ0czogXCJ2aWRlb1wiLFxuICAgICAgbW92OiBcInZpZGVvXCIsXG4gICAgICBkb2M6IFwiZG9jXCIsXG4gICAgICBkb2N4OiBcImRvY1wiLFxuICAgICAgZXBzOiBcImRvY1wiLFxuICAgICAgdHh0OiBcImRvY1wiLFxuICAgICAgb2R0OiBcImRvY1wiLFxuICAgICAgcnRmOiBcImRvY1wiLFxuICAgICAgcHB0OiBcInBwdFwiLFxuICAgICAgcHB0eDogXCJwcHRcIixcbiAgICAgIHBwczogXCJwcHRcIixcbiAgICAgIHBwc3g6IFwicHB0XCIsXG4gICAgICBvZHA6IFwicHB0XCIsXG4gICAgfTtcblxuICAgIGNvbnN0IGNodW5rcyA9IGlucHV0RmlsZW5hbWUuc3BsaXQoXCIuXCIpO1xuICAgIGlmIChjaHVua3MubGVuZ3RoIDwgMikge1xuICAgICAgcmV0dXJuIFwiYXBwbGljYXRpb25cIjtcbiAgICB9XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gY2h1bmtzW2NodW5rcy5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICh0eXBlc1tleHRlbnNpb25dID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBcImFwcGxpY2F0aW9uXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0eXBlc1tleHRlbnNpb25dO1xuICAgIH1cbiAgfVxufVxuIl19