Days
Hours
Minutes
Seconds
x

Froala Editor v4.2.0 is Here LEARN MORE

Skip to content

.NET File Validation

How it works

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

Jump to Complete Example

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

FroalaEditor.FileOptions options = new FroalaEditor.FileOptions
{
    Fieldname = "file",
    Validation = new FroalaEditor.FileValidation(new string[] { "txt", "pdf", "doc" }, new string[] { "text/plain", "application/msword", "application/x-pdf", "application/pdf" })
};

object response = FroalaEditor.File.Upload(System.Web.HttpContext.Current, fileRoute, 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 files you want to store on disk. Below is an example of how to validate if a file is smaller than 10Mb.

Func validationFunction = (filePath, mimeType) => {
    long size = new System.IO.FileInfo(filePath).Length;

    if (size > 10 * 1024 * 1024)
    {
        return false;
    }

    return true;
};

FroalaEditor.FileOptions options = new FroalaEditor.FileOptions
{
    Fieldname = "file",
    Validation = new FroalaEditor.FileValidation(validationFunction)
};


object response = FroalaEditor.File.Upload(System.Web.HttpContext.Current, fileRoute, options);

Complete Example

<script>
  new FroalaEditor('.selector', {
    // Set the file upload URL.
    fileUploadURL: '/FroalaApi/UploadFileValidation',

    fileUploadParams: {
      id: 'my_editor'
    }
  })
</script>
using System;
using System.Web.Mvc;

namespace demo.Controllers
{
    public class FroalaApiController : Controller
    {
        public ActionResult UploadFileValidation()
        {
            string fileRoute = "/Public/";

            FroalaEditor.FileOptions options = new FroalaEditor.FileOptions
            {
                Fieldname = "file",
                Validation = new FroalaEditor.FileValidation(new string[] { "txt", "pdf", "doc" }, new string[] { "text/plain", "application/msword", "application/x-pdf", "application/pdf" })
            };

            try
            {
                return Json(FroalaEditor.File.Upload(System.Web.HttpContext.Current, fileRoute, options);
            }
            catch (Exception e)
            {
                return Json(e);
            }
        }
    }
}

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

[class^="wpforms-"]
[class^="wpforms-"]
[bws_google_captcha]
<div class="gglcptch gglcptch_v2"><div id="gglcptch_recaptcha_444789750" class="gglcptch_recaptcha"></div> <noscript> <div style="width: 302px;"> <div style="width: 302px; height: 422px; position: relative;"> <div style="width: 302px; height: 422px; position: absolute;"> <iframe src="https://www.google.com/recaptcha/api/fallback?k=6Ld6lNoUAAAAAM626LfCOrnkBFJtYZAKESFCjgv_" frameborder="0" scrolling="no" style="width: 302px; height:422px; border-style: none;"></iframe> </div> </div> <div style="border-style: none; bottom: 12px; left: 25px; margin: 0px; padding: 0px; right: 25px; background: #f9f9f9; border: 1px solid #c1c1c1; border-radius: 3px; height: 60px; width: 300px;"> <textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response" style="width: 250px !important; height: 40px !important; border: 1px solid #c1c1c1 !important; margin: 10px 25px !important; padding: 0px !important; resize: none !important;"></textarea> </div> </div> </noscript></div>
[class^="wpforms-"]
[class^="wpforms-"]
[bws_google_captcha]
<div class="gglcptch gglcptch_v2"><div id="gglcptch_recaptcha_206504239" class="gglcptch_recaptcha"></div> <noscript> <div style="width: 302px;"> <div style="width: 302px; height: 422px; position: relative;"> <div style="width: 302px; height: 422px; position: absolute;"> <iframe src="https://www.google.com/recaptcha/api/fallback?k=6Ld6lNoUAAAAAM626LfCOrnkBFJtYZAKESFCjgv_" frameborder="0" scrolling="no" style="width: 302px; height:422px; border-style: none;"></iframe> </div> </div> <div style="border-style: none; bottom: 12px; left: 25px; margin: 0px; padding: 0px; right: 25px; background: #f9f9f9; border: 1px solid #c1c1c1; border-radius: 3px; height: 60px; width: 300px;"> <textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response" style="width: 250px !important; height: 40px !important; border: 1px solid #c1c1c1 !important; margin: 10px 25px !important; padding: 0px !important; resize: none !important;"></textarea> </div> </div> </noscript></div>
[class^="wpforms-"]
[class^="wpforms-"]
[bws_google_captcha]
<div class="gglcptch gglcptch_v2"><div id="gglcptch_recaptcha_774511157" class="gglcptch_recaptcha"></div> <noscript> <div style="width: 302px;"> <div style="width: 302px; height: 422px; position: relative;"> <div style="width: 302px; height: 422px; position: absolute;"> <iframe src="https://www.google.com/recaptcha/api/fallback?k=6Ld6lNoUAAAAAM626LfCOrnkBFJtYZAKESFCjgv_" frameborder="0" scrolling="no" style="width: 302px; height:422px; border-style: none;"></iframe> </div> </div> <div style="border-style: none; bottom: 12px; left: 25px; margin: 0px; padding: 0px; right: 25px; background: #f9f9f9; border: 1px solid #c1c1c1; border-radius: 3px; height: 60px; width: 300px;"> <textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response" style="width: 250px !important; height: 40px !important; border: 1px solid #c1c1c1 !important; margin: 10px 25px !important; padding: 0px !important; resize: none !important;"></textarea> </div> </div> </noscript></div>