Skip to main content

File upload widget for Plone with multiple file selection.

Project description

<nav class="contents" id="table-of-contents" role="doc-toc">

Table of Contents


Life, the Universe, and Everything

File upload widget with multiple file selection, drag&drop support, progress bars, client-side image resizing and preview images.

This package is smoothly integrated with Plone’s UI and works with any folderish content type based on Archetypes or Dexterity.

Mostly Harmless

Got an idea? Found a bug? Let us know by opening a support ticket.

See the complete list of bugs on GitHub.

Don’t Panic


To enable this product in a buildout-based installation:

  1. Edit your buildout.cfg and add collective.upload to the list of eggs to install:

eggs =

... = <s>1.8.3</s>

After updating the configuration you need to run ‘’bin/buildout’’, which will take care of updating your system.

Go to the ‘Site Setup’ page in a Plone site and click on the ‘Add-ons’ link.

Check the box next to collective.upload and click the ‘Activate’ button.


The upload widget can be accessed selecting the ‘Multiple files’ option in the ‘Add new…’ menu.

<figure class="align-center"> <figcaption>

The upload widget in a modal window.

</figcaption> </figure>

Select as many files as you want to upload using by the ‘Add files…’ button or the drag and drop feature (you can even do the later among diferent browser windows). You can set the title, description and rights for any file or image in advance. If images have Exif metadata it will be used to pre-populate description and rights. A preview of all images, audios and videos will be shown. Start the upload individually or in a batch by pressing the ‘Start’ button. You will see a bar indicating the progress of the upload. You can cancel the upload at any time and you can also delete any file or image already uploaded into the site.

The upload widget can be also used in the context of the folder contents view of any folderish object.

<figure class="align-center"> <figcaption>

The upload widget in the folder contents view.

</figcaption> </figure>

You can configure some aspects of the upload widget using the Upload configlet on Site Setup.

<figure class="align-center"> <figcaption>

The Upload control panel configlet.

</figcaption> </figure>

You can disable the display of the upload widget in the folder contents view (the widget will be always accessible via the ‘Add new…’’ menu regardless this setting). You can set which files extensions are allowed to be uploaded using the widget. You can also set the maximum file size and maximum dimensions for images (images will be automatically resized client-side if they are bigger than these settings).


  • Support for Archetypes and Dexterity-based content types

  • No browser plugins required: The implementation is based on open standards like HTML5 and JavaScript and requires no additional browser plugins

  • Multiple file upload: Allows to select multiple files at once and upload them simultaneously

  • Drag & Drop support: Allows to upload files by dragging them from your desktop or filemanager and dropping them on your browser window

  • Support for Exif metadata: Uploading images with Exif metadata will pre-populate description and rights

  • Preview for images, audios and videos: A preview of image, video and audio files is displayed before uploading with browsers supporting the required JS APIs

  • Client-side image resizing: Images can be automatically resized on client-side with browsers supporting the required JS APIs

  • Upload progress bar: Shows a progress bar indicating the upload progress for individual files and for all uploads combined

  • Cancelable uploads: Individual file uploads can be canceled to stop the upload progress

  • Graceful fallback for legacy browsers: Uploads files via XMLHttpRequests if supported and uses iframes as fallback for legacy browsers

  • Drag and drop uploads from another web page: Supports uploading files dragged from one page into another (tested with Firefox and Chrome)

Desktop browsers support

  • Google Chrome

  • Apple Safari 4.0+

  • Mozilla Firefox 3.0+

  • Opera 11.0+

  • Microsoft Internet Explorer 6.0+

Mobile browsers are also supported. Check Browser support for details on features supported by each browser.

Santa’s wish list

We want to implement these features at some point in the future:

  • [ ] Check if constraints are in place before adding the menu item

  • [ ] Resumable uploads: Aborted uploads can be resumed with browsers supporting the Blob API

  • [ ] Chunked uploads: Large files can be uploaded in smaller chunks with browsers supporting the Blob API

  • [ ] HTML file upload form fallback: Shows a standard HTML file upload form if JavaScript is disabled

Not entirely unlike


Pure javascript files upload tool for Plone, with drag and drop, multi selection, and progress bar.


Multi File Upload for Plone.

Share and Enjoy

collective.upload would not have been possible without the contribution of the following people:

You can find an updated list of package contributors on GitHub.

collective.upload is an implementation of the jQuery File Upload plugin for Plone.

Development sponsored by Open Multimedia.


There’s a frood who really knows where his towel is.

9.18.0rc2 (2017-04-24)

  • Add a check to add aditional handlers just for Bootstrap 2. [rodfersou]

  • Fix upload behavior when there is two fileuploads at page (overlay at /folder_contents folder). [rodfersou]

  • Review reload page to happen when all uploads are finished or cancelled. [rodfersou]

  • Attach aditional handlers for events associated with the “Upload” buttons; this is needed to work around uploads when an old version of collective.js.bootstrap is installed. [rodfersou]

  • Avoid drag and drop conflicts with other libraries. [rodfersou]

9.18.0rc1 (2017-04-20)

  • Add support for basic Exif metadata handling; ImageDescription and Artist Exif fields are now used to pre-populate description and rights fields on Image content type (closes #6). [rodfersou]

  • Reload page after close overlay (fixes #16). [rodfersou]

  • Cross-site file uploads was refactored and now keeps image name. [rodfersou]

  • Attach aditional handlers for events associated with the “Cancel” buttons; this is needed to work around canceling uploads when an old version of collective.js.bootstrap is installed (fixes #85). [rodfersou]

  • Fix CSS to fileupload class instead of fileupload id; this allows multiple plugin instances. [rodfersou]

  • Avoid page template exception with [rodfersou]

9.18.0b1 (2017-04-17)

  • Update jQuery File Upload Plugin to version 9.18.0 (closes #56). [rodfersou]

  • Drop support for Plone 4.2. [rodfersou]

1.3b1 (2016-08-24)

  • The IMultipleUpload behavior declaration has been removed as it’s useless; the class will be also removed on next release. [hvelarde]

  • Registry records are now correctly removed when uninstalling the package. [hvelarde]

  • Package is compatible with Plone 4.2 again. [hvelarde]

1.2b1 (2016-07-19)

  • Use a viewlet to display the upload widget on the folder_contents view instead of overriding it. The viewlet can be disable via a new option in the control panel configlet (closes #65). [rodfersou, hvelarde]

  • Remove dependency on five.grok (closes #66). [rodfersou]

  • Cross-site file uploads are working again (fixes #71). [rodfersou]

  • Fix MIME type of images processed in jsonimageserializer view. [hvelarde]

  • Add field to set the creator (closes #34). [rodfersou]

  • Finnish translations. [petri]

1.1b2 (2016-04-25)

  • Use jQuery .then() method instead of deprecated deferred.pipe(); fix image preview and upload progress bar. [rodfersou]

  • Fix UnicodeEncodeError on JSVariables view. [rodfersou]

1.1b1 (2016-04-15)

  • Remove dependency on Bootstrap (closes #46). [rodfersou]

  • Use “application/javascript” media type instead of the obsolete “text/javascript”. [hvelarde]

  • Remove dependency on Products.CMFQuickInstallerTool. [hvelarde]

  • Fix IE conditional comment on JS registry [tcurvelo]

  • Drop support for Plone 4.2 (we no longer test under this version but it may work). [hvelarde]

  • Make control panel configlet accesible to Site Administrator role (closes #35). [hvelarde]

  • Updated Spanish translation. [macagua]

1.0rc1 (2014-10-24)

  • Fix browser CORS check. [petschki]

  • Add missing uninstall profile. [thet]

1.0b6 (2013-07-24)

  • Fixes issue #24, upload not working on folderish objects with a default_page defined. [jpgimenez]

  • Fix issue with collective.upload not setting filename on uploaded images (Archetypes). [ericof]

  • Fix misplaced input element in chrome. [domruf]

1.0b5 (2013-06-13)

  • Display viewlet only for users with Add portal content permission and if the context is a contaner [ericof]

  • Fix issue with collective.upload ignoring title information [ericof]

1.0b4 (2013-05-02)

  • Package now depends on >= 1.5.5 to keep it in sync with Plone 4.3 pinned versions. [hvelarde]

  • Support Dexterity content types ( [ericof]

  • Fix package dependencies. [hvelarde]

  • Remove dependency on unittest2. This could break tests when ran under Python 2.6; you have been warned. [hvelarde]

  • Package is now compatible with Plone 4.3. [jpgimenez, hvelarde]

  • Add placeholders to input fields in upload template. [hvelarde]

  • Fix translation. [quimera]

1.0b3 (2013-01-15)

  • Added support for Cross-site file uploads. [quimera]

  • Fixed URL generation in the sub menu item. [quimera]

  • Fixed compatibility with Chameleon and the JavaScript template. [quimera]

  • Refactoring (almost) all dirty JavaScript code. [quimera]

  • Updated version of jQuery File Upload. [quimera]

  • Add deprecation warning message on the IMultipleUpload behavior. [hvelarde]

  • Tested compatibility with Plone 4.3. [hvelarde]

  • Update package documentation. [hvelarde]

  • Fix package license to GPLv2. [hvelarde]

  • Package will now support Plone 4.2+ only. [hvelarde]

  • Fixed browser layer interface. [hvelarde]

1.0b2 (2012-05-16)

  • To avoid problems (for example with collective.googlenews) we pass portal site to namechooser instead of context, because the context could be another contenttype. [flecox]

1.0b1 (2012-05-02)

  • Initial release.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

collective.upload-9.18.0rc2.tar.gz (822.4 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page