Days
Hours
Minutes
Seconds
x

Froala Editor v4.1.4 is Here LEARN MORE

Skip to content

Python SDK Image Reference

upload (req, fileRoute, options)

Returns: Dictionary

Method used to upload image to the specified location on disk.

Parameters:


  • req

    The Python SDK contains 3 adapters (Django, Flask and Pyramid) and you can create your custom adapter by implementing BaseAdapter class:

    # Django adapter example.
    
    from froala_editor import BaseAdapter
    
    class DjangoAdapter(BaseAdapter):
    """
    Django Adapter: Check BaseAdapter to see what methods description.
    """
    
    def checkFile(self, fieldname):
      if fieldname not in self.request.FILES:
        raise Exception("File does not exist.")
    
    def getFilename(self, fieldname):
      self.checkFile(fieldname)
      return self.request.FILES[fieldname].name
    
    def getMimetype(self, fieldname):
      self.checkFile(fieldname)
      return self.request.FILES[fieldname].content_type
    
    def saveFile(self, fieldname, fullNamePath):
      self.checkFile(fieldname)
    
      with open(fullNamePath, 'wb+') as destination:
        for chunk in self.request.FILES[fieldname].chunks():
            destination.write(chunk)
    
    You should override all methods from BaseAdapter

    Type: Request Object that implements BaseAdapter interface.

  • fileRoute

    The server route where the image will be uploaded. This route must be public to be accessed by the editor.

    Type: String

  • options

    This parameter is optional. It can be used to pass custom options for the image upload.

    Type: Dictionary


options parameter:

  • fieldname

    The field name from the request object.

    Type: String
    Default:
    "file"
  • validation

    A dictionary or a function used to validate the uploaded image. The dictionary specifies the allowed image extensions through allowedExts and the allowed mime types through allowedMimeTypes. The function should be invoked with: filePath and mimetype.

    Type: Dictionary or Function
    Default:
    {
      'allowedExts': ['gif', 'jpeg', 'jpg', 'png', 'svg', 'blob'],
      'allowedMimeTypes': ['image/gif', 'image/jpeg', 'image/pjpeg', 'image/x-png', 'image/png', 'image/svg+xml']
    }
    
  • resize

    A string with custom options to scale the image. Available format is on Python Wand-Py library geometry. Example:

    '300x300'

    Type: String
    Default:
    NULL

Response

If the upload is completed successfully, the method returns a dictionary with the absolute path to the uploaded image. If an error occurs, the method throws an exception.

try:
  response = Image.upload(CustomAdapter(request), '/public/')
except Exception:
  response = {'error': str(sys.exc_info()[1])}
return HttpResponse(json.dumps(response), content_type="application/json")

delete (src)

Method used to delete an image from disk. Throws an exception if an error occurs.

Parameters:


  • src

    The image path available in the body of the request under src key.

    Type: String

list (folderPath, thumbPath)

Returns: Array of dictionaries

Method used to list all images from disk.

Parameters:


  • folderPath

    The path of the folder from where the images are being loaded is relative to the root of your application.

    Type: String

  • thumbPath

    This parameter is optional. The path of the folder from where the image thumbs are being loaded is relative to the root of your application.

    Type: String

Response

If the load is completed successfully, the method returns an array with dictionaries containing the image url, thumb and name. If an error occurs, the method throws an exception.

try:
  response = Image.list('/public/')
except Exception:
  response = {'error': str(sys.exc_info()[1])}

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_240729668" 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_1955934551" 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_1523328491" 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>