- Back to Docs
- Install and Configure
- Image
- Server Upload
- Server Delete
- S3 Upload
- Resize
- Validation
- Image Manager
- Simple Server
- File
- Server Upload
- Server Delete
- S3 Upload
- Validation
- References
- Image
- File
- S3
Python Image Validation
How it works
- The image gets uploaded to your server.
- Before storing the image on disk, it is being validated on server side.
Image Upload
In the Server Upload article we explain the steps to upload an image on your server. When you insert an image in the rich text editor, you can validate its format. However that check is done only on the filename and not on the mime type. We recommend to make additional checks on server side just to make sure that users don't upload images in bad formats.
Validate Extension
The WYSIWYG editor's Python SDK comes with the possibility to check the image extension when it is being stored on the disk. Additional to the file name extension, it is using the mime type of the file for better accuracy.
options = {
'validation': {
'allowedExts': ['gif'],
'allowedMimeTypes': ['image/gif']
}
}
response = Image.upload(CustomAdapter(request), '/public/', options)
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.
import wand.image
def validation(filePath, mimetype):
with wand.image.Image(filename=filePath) as img:
if img.width != img.height:
return False
return True
options = {
'validation': validation
}
response = Image.upload(CustomAdapter(request), '/public/', options)
Complete Example
<script>
new FroalaEditor('.selector', {
// Set the image upload URL.
imageUploadURL: '/upload_image_validation'
})
</script>
# Django
from django.http import HttpResponse
import json
from froala_editor import Image
from froala_editor import DjangoAdapter
def upload_image_validation(request):
options = {
'validation': {
'allowedExts': ['gif'],
'allowedMimeTypes': ['image/gif']
}
}
try:
response = Image.upload(DjangoAdapter(request), '/public/', options)
except Exception:
response = {'error': str(sys.exc_info()[1])}
return HttpResponse(json.dumps(response), content_type="application/json")
# Flask
from flask import request
import json
from froala_editor import Image
from froala_editor import FlaskAdapter
@app.route('/upload_image_validation', methods=['POST'])
def upload_image_validation():
options = {
'validation': {
'allowedExts': ['gif'],
'allowedMimeTypes': ['image/gif']
}
}
try:
response = Image.upload(FlaskAdapter(request), '/public/', options)
except Exception:
response = {'error': str(sys.exc_info()[1])}
return json.dumps(response)
# Pyramid
from pyramid.response import Response
import json
from froala_editor import Image
from froala_editor import PyramidAdapter
def upload_image_validation(request):
options = {
'validation': {
'allowedExts': ['gif'],
'allowedMimeTypes': ['image/gif']
}
}
try:
response = Image.upload(PyramidAdapter(request), '/public/', options)
except Exception:
response = {'error': str(sys.exc_info()[1])}
return Response(json.dumps(response))