Skip to content

redmundas/file-type-mime

Repository files navigation

file-type-mime

FOSSA Status

Utility to parse mime type from a file content.

Usage

Browser (react)

import { parse } from 'file-type-mime';

export default function fileUpload() {
  async function onChange(e) {
    const [file] = e.target.files;
    const buffer = await file.arrayBuffer();
    const result = parse(buffer);

    console.log('MIME_TYPE', result);
  }

  return (
    <form>
      <input type="file" onChange={onChange}>
    </form>
  );
}

Node.js

import { parse } from "file-type-mime";
import { readFileSync } from "node:fs";
import { resolve } from "node:path";

const file = resolve("./path/to/file.pdf");
const buffer = readFileSync(file);
const result = parse(buffer);

console.log("MIME_TYPE", result);

API

Signature

function parse(buffer: ArrayBuffer, options: Options = {}): Result | undefined

Arguments

buffer

Type: ArrayBuffer

A buffer representing file data

options (optional)

Type: { extra?: boolean; hint?: { ext?: string; mime?: string } }

  • hint - used to short-circuit general flow by filtering signatures list
  • extra - used to parse additional file type formats (like json, txt)

Return

Type: { ext: string; mime: string } | undefined

Supported file types

(more to come...)

File extension Content (mime) type
bmp image/bmp
gif image/gif
ico image/x-icon
jpg image/jpeg
heic image/heic
png image/png
tiff image/tiff
pdf application/pdf
rtf application/rtf
epub application/epub+zip
gz application/gzip
jar application/java-archive
zip application/zip
bz2 application/x-bzip2
rar application/x-rar-compressed
tar application/x-tar
docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
pptx application/vnd.openxmlformats-officedocument.presentationml.presentation
xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
opd application/vnd.oasis.opendocument.presentation
ods application/vnd.oasis.opendocument.spreadsheet
odt application/vnd.oasis.opendocument.text
db application/vnd.sqlite3
7z application/x-7z-compressed
avi video/x-msvideo
mp3 audio/mp3
mp4 video/mp4
oga audio/ogg
ogg audio/ogg
ogm video/ogg
ogv video/ogg
ogx application/ogg
wav audio/wav
woff font/woff
woff2 font/woff2
deb application/x-deb
flac audio/x-flac
psd image/vnd.adobe.photoshop
wasm application/wasm
webp image/webp
class application/java-vm
exe application/x-msdownload
parquet application/vnd.apache.parquet
json application/json
txt text/plain
vsix application/vsix

License

FOSSA Status