Days
Hours
Minutes
Seconds
x

New Froala Editor v5.0.0 is here โ€“ Learn More

Skip to content
Froala Documentation

Ruby Image Validation

How it works

  1. The image gets uploaded to your server.
  2. Before storing the image on disk, it is being validated on server side.

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 Ruby SDK can check the image extension before storing it on disk, and can also check the mime type.

class UploadController < ActionController::Base

  ...

  def image_upload
    options: {
      fieldname: 'file',
      validation: {
        allowedExts: [".gif", ".jpeg", ".jpg", ".png", ".svg", ".blob"],
        allowedMimeTypes: [ "image/gif", "image/jpeg", "image/pjpeg", "image/x-png", "image/png", "image/svg+xml" ]
      }
    }

    # Store the image.
    FroalaEditorSDK::Image.upload(params, "public/uploads/images/", options)
  end

  ...

end

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.

class UploadController < ActionController::Base

  ...

  def image_upload
    options: {
      validation: Proc.new do |file, type|
        img = MiniMagick::Image.open(file)
        if img.width != img.height
          raise 'Image is not square'
        end
      end
    }
    
    render :json => FroalaEditorSDK::Image.upload(params, "public/uploads/images/", options)
  end

  ...

end

Complete Example

<script>
  new FroalaEditor('.selector', {
    // Set the image upload URL.
    imageUploadURL: '/image_upload'
  })
</script>
class UploadController < ActionController::Base

  ...

  def upload_file_validation
    options: {
      validation: Proc.new do |file, type|
        img = MiniMagick::Image.open(file)
        if img.width != img.height
          raise 'Image is not square'
        end
      end
    }
    
    render :json => FroalaEditorSDK::Image.upload(params, "public/uploads/images/", options)
  end

  ...

end

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

Ready to dive in? Explore our plans

Sign up

Download the code by signing up for our newsletter

Sign up

Download the code by signing up for our newsletter

Note: By registering, you confirm that you agree to the processing of your personal data by Froala, Inc. - Froala as described in the Privacy Statement. Froala, Inc. - Froala is part of the Idera group and may share your information with its parent company Idera, Inc., and its affiliates. For further details on how your data is used, stored, and shared, please review our Privacy Statement.