javascriptjquerycloudinarydropzonetrumbowyg

how to add cloudinary parameters to upload plugin in Trumbowyg


I am using the trumbowyg editor in my project. From the documentation, I know that I can use the following code to set the image upload content of the editor.

$('#editor')
.trumbowyg({
    btns: ['upload'],
    plugins: {
        // Add imagur parameters to upload plugin for demo purposes
        upload: {
            serverPath: 'https://api.imgur.com/3/image',
            fileFieldName: 'image',
            headers: {
                'Authorization': 'Client-ID xxxxxxxxxxxx'
            },
            urlPropertyName: 'data.link'
        }
    }
});

this works fine with imgur but I want to use cloudinary server instead of imgur.

could anyone please guide what I have to do with plugins:{} when using cloudinary?

also I'm using dropzone.js with cloudinary to upload image and this is also working properly. here is dropzone function code:

Dropzone.autoDiscover = true;
var myDropzone = new Dropzone(document.getElementById('image-upload'), {
  clickable: "#image-upload #btn-add",
  uploadMultiple: false,
  autoProcessQueue: true,
  acceptedFiles:'.jpg,.png,.jpeg,.gif',
  parallelUploads: 10,
  maxFilesize: 9,
  maxFiles: 10,
  url: 'https://api.cloudinary.com/v1_1/demo_project/image/upload',
  addedfile: function(file) {
    // console.log(file);
    new Noty({
      type: 'success',
      text: "Uploading...",
      timeout: false
    }).show();
    // myDropzone.processQueue();
  },
  success: function(file, response){
    new Noty({
      type: 'success',
      text: "Uploaded!",
      killer: true
    }).show();
    newImageArray.push({
      public_id: response.public_id,
      url: response.url,
      secure_url: response.secure_url
    });
    newImageArrayJSON = JSON.stringify(newImageArray);
    $imageStorage.val(newImageArrayJSON)
    $("#image-upload .image").html('<img src="' + response.secure_url + '">')
    $("#image-upload #btn-add").hide();
    $("#image-upload #btn-remove").show();
  }
});
myDropzone.on('sending', function (file, xhr, formData) {
  formData.append('api_key', 112233445566778);
  formData.append('timestamp', Date.now() / 1000 | 0);
  formData.append('upload_preset', 'mypreset');
});

Thanks in advance!


Solution

  • I would advise starting with the following basic implementation which I tested and worked for me:

    $('#editor').trumbowyg({
        btns: ['upload'],
        plugins: {
            upload: {
                serverPath: 'https://api.cloudinary.com/v1_1/demo_project/image/upload',
                fileFieldName: 'file',
                urlPropertyName: 'data.secure_url',
                data: [
                    {name: 'api_key', value: '112233445566778'},
                    {name: 'timestamp', value: Date.now() / 1000 | 0},
                    {name: 'upload_preset', value: 'mypreset'}
                ],
                success: function (data) {
                    console.log(data);
                },
                error: function (error) {
                    console.log(error.responseText);
                }
            }
        }
    });
    

    You can log in to your Cloudinary account and modify your upload preset to restrict uploads based on different conditions, the same as you do with dropzone.js, for example to only allow uploads of specific formats etc.