- Getting Started
- Browser Support
- Languages Support
- Shortcuts
- Activation
- Examples
- Customize the Editor
- Use-cases
- Plugins
- APIs
- Development Frameworks
- Server Integrations
- Server SDKs
- Migration Guides
- Changelog
- Tutorials
- Froala Docs
- /
- SDKs
- /
- Node JS
- /
- File Validation
Node.JS File Validation
How it works
- Upload file to the server.
- Validate file on the server side before storing it.
File Upload
The Server Upload section describes the steps to upload a file to a server. You can validate files 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 file formats.
Validate Extension
The editor's Node.JS SDK can check the file extension before storing it on disk, and it also checks the mime type.
var options = {
validation: {
'allowedExts': ['txt', 'pdf', 'doc'],
'allowedMimeTypes': ['text/plain', 'application/msword', 'application/x-pdf', 'application/pdf']
}
}
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 files you want to store on disk. Below is an example of how to validate if a file is smaller than 10Mb.
var options = {
function(filePath, mimetype, callback) {
fs.stat(filePath, function(err, stat) {
if(err) {
return callback(err);
}
if (stat.size > 10 * 1024 * 1024) { // > 10M
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 file upload URL.
fileUploadURL: '/image_upload',
fileUploadParams: {
id: 'my_editor'
}
})
</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': ['txt', 'pdf', 'doc'],
'allowedMimeTypes': ['text/plain', 'application/msword', 'application/x-pdf', 'application/pdf']
}
}
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.