get-typeandmime
Version:
npm package for generating its file-type on basis of magic numbers!!
45 lines (33 loc) • 1.2 kB
JavaScript
const fs = require("fs");
const types = require("./fileTypes");
const magicNumbers = types;
// Get file Mime and signs based on Type of File
function getFileType(filePath) {
const buffer = Buffer.alloc(8);
const fd = fs.openSync(filePath, "r");
fs.readSync(fd, buffer, 0, 8, 0);
fs.closeSync(fd);
const fileHeader = buffer.toString("hex").toUpperCase();
for (const [fileType] of Object.entries(magicNumbers)) {
const fileCheck = types[fileType].signs[0].split(",")[1];
if (fileHeader.startsWith(fileCheck)) {
return { Type: fileType, mime: `${magicNumbers[fileType].mime}` };
}
}
return "Unsupported file type";
}
// verify whether the file extension is present in list or not
function getFileSign(fileExtension) {
if (types[fileExtension]) {
return types[fileExtension];
} else {
return "Unsupported file type by this NPM Package, Please contact author to add it up!!";
}
}
// get file type from remote location
async function getStreamFileType(file) {
const result = await fetch(file);
return (await result.blob()).type;
}
// Expecting string argument for function
module.exports = { getFileType, getFileSign, getStreamFileType};