Tiny Drive Pick API

The tinydrive.pick method allows users to pick files from Tiny Drive and get the metadata of those files returned in a promise. This metadata can be used to insert or retrieve the file or files if needed.

File Picker Result Format

The tinydrive.pick method will return a promise with object that has a files property. This files property is an array of files with the following properties.

{
  "files": [
    {
      "name": "myphoto.jpg",
      "url": "https://drive.tiny.cloud/1/h0ed4hzbe69rfcrnj0uwvwi73e8y5m70jlolaalzkssog63b/48bda29d-ed1f-488f-adf7-b597dd3a8791",
      "size": 1180390,
      "type": "image",
      "mdate": "2018-06-13T16:49:10Z"
    }
  ]
}
name

The name of the selected file for example: my.jpg.

size

The size in bytes of the selected file.

url

The URL for the selected file would be in the following format: https://drive.tiny.cloud/1/<your api key>/<file uuid>

mdate

The modification date for the file in ISO 8601 format for example: 2019-02-24T15:00:00Z

Interactive example: Using tinydrive.pick

  • TinyMCE

  • HTML

  • JS

<textarea id="drive-pick-example">
  This demo shows you how to call tinydrive from within the tinymce api.
</textarea>
tinymce.init({
  selector: 'textarea#drive-pick-example',
  height: 200,
  menubar: false,
  plugins: 'tinydrive link image media',
  toolbar: 'custom | insertfile | link image media',
  tinydrive_token_provider: 'URL_TO_YOUR_TOKEN_PROVIDER',
  setup: (editor) => {
    editor.ui.registry.addButton('custom', {
      text: 'Custom pick',
      onAction: () => {
        editor.plugins.tinydrive.pick({
        }).then((result) => {
          result.files.forEach((file) => {
            const link = editor.dom.createHTML('a', { href: file.url }, editor.dom.encode(file.name));
            editor.insertContent(link);
          });
        });
      }
    });
  }
});

Options

filetypes

This option restricts the files displayed based on the following file type categories:

document

doc, xls, ppt, pps, docx, xlsx, pptx, pdf, rtf, txt, key, pages, numbers

audio

wav, wave, mp3, ogg, oga, ogx, ogm, spx, opus

video

mp4, m4v, ogv, webm, mov

image

gif, jpeg, jpg, jpe, jfi, jif, jfif, pjpeg, pjp, png, tif, tiff, bmp, webp, avif, apng

archive

zip

For example: If the application is using Tiny Drive to insert images, then set ['image'] in the file types array.

Type: Array

Interactive example: Using filetypes to restrict Tiny Drive to image formats

  • TinyMCE

  • HTML

  • JS

<textarea id="drive-pick-images-example">
  This demo shows you how to call tinydrive from within the tinymce api.
</textarea>
tinymce.init({
  selector: 'textarea#drive-pick-images-example',
  height: 200,
  menubar: false,
  plugins: 'tinydrive link image media',
  toolbar: 'custom | insertfile | link image media',
  tinydrive_token_provider: 'URL_TO_YOUR_TOKEN_PROVIDER',
  setup: (editor) => {
    editor.ui.registry.addButton('custom', {
      text: 'Custom pick image',
      onAction: () => {
        editor.plugins.tinydrive.pick({
          filetypes: ['image']
        }).then((result) => {
          result.files.forEach((file) => {
            const img = editor.dom.createHTML('img', { src: file.url });
            editor.insertContent(img);
          });
        });
      }
    });
  }
});

max_image_dimension

This option constrains the width and height of uploaded images. When specified, any images with a greater width or height than the specified amount would be proportionally resized down to the specified maximum dimension.

Type: Number

Example: Using max_image_dimension with the tinydrive.browse API

tinymce.init({
  selector: 'textarea',
  plugins: 'tinydrive image',
  toolbar: 'custombrowse',
  tinydrive_token_provider: 'URL_TO_YOUR_TOKEN_PROVIDER',
  setup: (editor) => {
    editor.ui.registry.addButton('custombrowse', {
      text: 'Custom browse',
      onAction: () => {
        editor.plugins.tinydrive.browse({
          max_image_dimension: 1024
        }).then(() => {
          console.log('Tiny Drive dialog closed.');
        });
      }
    });
  }
});