How to get the file extension in Node.js from the MIME type
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
→ Download my free Node.js Handbook!
THE VALLEY OF CODE
THE WEB DEVELOPER's MANUAL
You might be interested in those things I do:
- Learn to code in THE VALLEY OF CODE, your your web development manual
- Find a ton of Web Development projects to learn modern tech stacks in practice in THE VALLEY OF CODE PRO
- I wrote 16 books for beginner software developers, DOWNLOAD THEM NOW
- Every year I organize a hands-on cohort course coding BOOTCAMP to teach you how to build a complex, modern Web Application in practice (next edition February-March-April-May 2024)
- Learn how to start a solopreneur business on the Internet with SOLO LAB (next edition in 2024)
- Find me on X