validate-image-type
TypeScript icon, indicating that this package has built-in type declarations

3.0.0 • Public • Published

validate-image-type Actions Status

Check the image file of a Buffer/Uint8Array that matched expected image MIME-type.

This library check the file contents instead of file extensions using following:

Features

  • Support various image types: popular images types + SVG
  • Reject File Camouflage by checking actual content buffer

Install

Install with npm:

npm install validate-image-type

Usage

import { validateMIMEType } from "validate-image-type";
const result = await validateMIMEType("./image.png", {
    allowMimeTypes: ['image/jpeg', 'image/gif', 'image/png', 'image/svg+xml']
});
if (!result.ok) {
    console.error(result.error);
    return;
}
console.log("This image is supported!");

See following document about MimeType.

Supported file types

Basic images file types and SVG(image/svg+xml).

"jpg",
"png",
"gif",
"webp",
"flif",
"cr2",
"tif",
"bmp",
"jxr",
"psd",
"ico",
"bpg",
"jp2",
"jpm",
"jpx",
"heic",
"cur",
"dcm",
"svg"

Examples

Integration with Multer middleware.

const multer = require('multer');
const temp_local_img_dir = path.join(__dirname, `/.temp_local_img_dir`);
const upload = multer({ dest: temp_local_img_dir });
const asyncWrapper = fn => {
    return (req, res, next) => {
        return fn(req, res, next).catch(next);
    }
};

app.post(
  '/upload',
  upload.single('image'), 
  asyncWrapper(async (req, res, next) => {
    const validationResult = await validateMIMEType(req.file.path, {
      originalFilename: req.file.originalname,
      allowMimeTypes: ['image/jpeg', 'image/gif', 'image/png', 'image/svg+xml'],
    });
    console.log('validationResult', validationResult);
    if (!validationResult.ok) {
      return res.send(400);
    }
    // uploading task
    // ...
  })
);

Changelog

See Releases page.

Running tests

Install devDependencies and Run npm test:

npm test

Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, please create an issue.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

License

MIT © azu

Package Sidebar

Install

npm i validate-image-type

Weekly Downloads

6,276

Version

3.0.0

License

MIT

Unpacked Size

21.9 kB

Total Files

15

Last publish

Collaborators

  • azu