VOOZH about

URL: https://froala.com/wysiwyg-editor/docs/sdks/nodejs/image-validation/

⇱ Node.JS Image Validation - Froala


June Special:  New customers get 40% off all Froala licenses
Days
Hours
Minutes
Seconds
x
Skip to content
Froala Documentation

Node.JS Image Validation

How it works

  1. Upload image to the server.
  2. Validate image on the server side before storing it.

Jump to Complete Example

Image Upload

The Server Upload section describes the steps to upload an image to a server. You can validate images when you insert them in the editor, however that only checks the filename and not the mime type. It is advisable to make additional checks on the server side to make sure users only upload valid image formats.

Validate Extension

The editor's Node.JS SDK can check the image extension before storing it on disk, and can also check the mime type.

var options = {
 validation: {
 'allowedExts': ['gif', 'jpeg', 'jpg', 'png', 'svg', 'blob'],
 'allowedMimeTypes': [
 'image/gif', 
 'image/jpeg', 
 'image/pjpeg', 
 'image/x-png', 
 'image/png', 
 'image/svg+xml'
 ]
 }
}

FroalaEditor.Image.upload(req, '/uploads/', options, function(err, data) { ... });

Custom Validation

You can also pass a custom method instead of validating the extension and mime type. This gives you full control on what types of images you want to store on disk. Below is an example of how to validate if an image is square.

var options = {
 // Include imageMagick.
 var gm = require('gm').subClass({imageMagick: true});

 validation: function(filePath, mimetype, callback) {
 gm(filePath).size(function(err, value){

 if (err) {
 return callback(err);
 }

 if (!value) {
 return callback('Error occurred.');
 }

 if (value.width != value.height) {
 return callback(null, false);
 }
 return callback(null, true);
 });
 }
}

FroalaEditor.Image.upload(req, '/uploads/', options, function(err, data) { ... });

Complete Example

<script>
 new FroalaEditor('.selector', {
 // Set the image upload URL.
 imageUploadURL: '/image_upload'
 })
</script>
var express = require('express');
var app = express();
var bodyParser = require('body-parser')
var path = require('path');
var fs = require('fs');
var FroalaEditor = require('PATH_TO_FROALA_SDK/lib/froalaEditor.js');

app.use(express.static(__dirname + '/'));
app.use('/bower_components', express.static(path.join(__dirname, '../bower_components')));
app.use(bodyParser.urlencoded({ extended: false }));

app.post('/upload_image', function (req, res) {
 var options = {
 validation: {
 'allowedExts': ['gif', 'jpeg', 'jpg', 'png', 'svg', 'blob'],
 'allowedMimeTypes': [
 'image/gif', 
 'image/jpeg', 
 'image/pjpeg', 
 'image/x-png', 
 'image/png', 
 'image/svg+xml'
 ]
 }
 }

 FroalaEditor.Image.upload(req, '/uploads/', options, function(err, data) {
 if (err) {
 return res.send(JSON.stringify(err));
 }
 res.send(data);
 });
});

Do you think we can improve this article? Let us know.

Froala AI Assistant

Hello! I'm your Froala AI assistant. How can I help you today?

Press Enter to send your message
Need human help? We're just a message away—reach out here.
How was your chat experience?

Your feedback helps us improve our AI assistant.

0/500