← flaviocopes.com

How to get the file extension in Node.js from the MIME type

Published Jun 20 2021

Psssst! The 2023 WEB DEVELOPMENT BOOTCAMP is starting on FEBRUARY 01, 2023! SIGNUPS ARE NOW OPEN to this 10-weeks cohort course. Learn the fundamentals, HTML, CSS, JS, Tailwind, React, Next.js and much more! ✨

I was sending a file through a form, and after using a form with multipart/form-data, server-side I had the File objects in req.files.

This gave me some information, like the path, name, size, type and so on:

{
  logo: File {
    size: 121920,
    path: '/var/folders/tn/h8lfq1sj7c33c0p30qgkd3mw0000gn/T/upload_b9e85b7cf989482a1760d82b77fd555a',
    name: 'Screen Shot 2021-06-07 at 21.40.29.png',
    type: 'image/png',
    hash: null,
    lastModifiedDate: 2021-06-07T22:20:50.150Z,
//...
  }
}

Notice the temp file path does not have an extension.

If you user the name server-side, no problem. But I wanted to change it and use my own naming conventions, so I needed just the file extension.

To get it, you can do 2 things: parse the file name, with

const path = require('path')
path.extname(req.files.logo.name) //.png

which does not require any 3rd party library.

Or you can use the mime-types package and look at the MIME type:

const mime = require('mime-types')
mime.extension('text/plain') //txt
mime.extension('image/png') //png


I write books for developers 👇🏼

© 2023 Flavio Copes Flavio Copes made in Italy 🇮🇹 using Notion to Site Notion to Site