Skip to main content

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

Project description

*****************
coppe.govupload
*****************

.. contents:: 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.

``coppe.govupload`` is smoothly integrated with Plone's UI and works with
any folderish content type based on Archetypes or Dexterity.

Mostly Harmless
---------------

.. image:: https://secure.travis-ci.org/collective/coppe.govupload.png?branch=master
:alt: Travis CI badge
:target: http://travis-ci.org/collective/coppe.govupload

.. image:: https://coveralls.io/repos/collective/coppe.govupload/badge.png?branch=master
:alt: Coveralls badge
:target: https://coveralls.io/r/collective/coppe.govupload

.. image:: https://pypip.in/d/coppe.govupload/badge.png
:alt: Downloads
:target: https://pypi.python.org/pypi/coppe.govupload

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

.. _`opening a support ticket`: https://github.com/collective/coppe.govupload/issues

Don't Panic
-----------

Installation
^^^^^^^^^^^^

To enable this product in a buildout-based installation:

#. Edit your buildout.cfg and add ``coppe.govupload`` to the list of eggs to
install::

[buildout]
...
eggs =
coppe.govupload

#. If you're using Plone 4.2, you may need to pin the right versions of the
jQuery and jQuery Tools packages::

[versions]
plone.app.jquery = 1.7.2
plone.app.jquerytools = 1.5.7

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 ``coppe.govupload`` and click the 'Activate' button.

.. Note::
You may have to empty your browser cache and save your resource registries
in order to see the effects of the product installation.

Features
^^^^^^^^

- Support for Archetypes and Dexterity-based content types
- **Multiple file upload**: Allows to select multiple files at once and upload
them sequentially (simultaneously is not currently enabled)
- **Drag & Drop support**: Allows to upload files by dragging them from your
desktop or file manager and dropping them on your browser window
- **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
- **Client-side image resizing**: Images can be automatically resized on
client-side with browsers supporting the required JS APIs
- **Preview images**: A preview of image files can be displayed before
uploading with browsers supporting the required JS APIs
- **No browser plugins required**: The implementation is based on open
standards like HTML5 and JavaScript and requires no additional browser
plugins
- **Graceful fallback for legacy browsers**: Uploads files via XMLHttpRequests
if supported and uses iframes as fallback for legacy browsers
- **Cross-site file uploads**: Supports uploading files to a different domain
with Cross-site XMLHttpRequests

Browsers supported
^^^^^^^^^^^^^^^^^^

- Google Chrome 7.0+
- Mozilla Firefox 3.0+
- Microsoft Internet Explorer 6.0+
- Opera 10.0+
- Apple Safari 4.0+

Drag & Drop is only supported on Google Chrome, Firefox 4.0+ and Safari 5.0+.

Client-side image resizing is only supported on Google Chrome, Firefox 4.0+.

Microsoft Internet Explorer has no support for multiple file selection or
upload progress.

`Extended browser support information`_.

Future features
^^^^^^^^^^^^^^^

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

- Refactoring of widget's UI
- **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
- Enable/disable automatic uploads
- Server side image resizing
- Server side file type constraint
- Asynchronous Module Definition (`AMD`_) support
- Widget for "allowed extensions" option

Developer's notes
^^^^^^^^^^^^^^^^^

In the folder "static" you are going to find the JavaScript used in this
project; here a list with the file name and function:

applications.js
The main file; here you will find 2 important things: plugin initialization
and inheritance of basic UI code with custom templates (e.g. every new file
dropped in the file upload widget is going to generate a new row, here is
the code for that).

`canvas-to-blob.min.js`_
Converts canvas elements into Blob objects, is a polyfill for the standard
HTML canvas.toBlob method.

`load-image.min.js`_
Load Image is a function to load images provided as File or Blob objects or
via URL.

jquery.fileupload.js
The most basic version of the File Upload plugin, with no UI.

jquery.fileupload-fp.js
Extends the basic fileupload widget with image processing functionality.

jquery.fileupload-ui.js
Extends the FP version, adds complete user interface interaction.

jquery.iframe-transport.js
Used for cross-site iframe transport uploads a way of degradation for the
XHR upload.

cors/jquery.xdr-transport.js
jQuery XDomainRequest Transport plugin; enables cross-domain AJAX requests
(GET and POST only) (not really used, its just there if you need to
implement that kind of functionality).

vendor/jquery.ui.widget.js
jQuery UI widget factory; very lightweight, flexible base for building
complex, statefull plugins with a consistent API. It is designed for general
consumption by developers who want to create object-oriented components
without reinventing common infrastructure.

vendor/jquery.getimagedata.min.js
It enables pixel level access to images from different origins. It works by sending a JSONP request with the URL of the image to the server. The server then converts the image into base64 encoded data URL and sends the image back as a JSON object. (what this script does, can be done with CORS)

To-do list
^^^^^^^^^^

* Check if constraints are in place before adding the menu item.

.. _`Extended browser support information`: https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support
.. _`canvas-to-blob.min.js`: https://github.com/blueimp/JavaScript-Canvas-to-Blob
.. _`load-image.min.js`: https://github.com/blueimp/JavaScript-Load-Image
.. _`AMD`: https://github.com/amdjs/amdjs-api/wiki/AMD

Not entirely unlike
-------------------

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

`coppe.govuploadify`_
Multi File Upload for Plone.

.. _`collective.quickupload`: http://pypi.python.org/pypi/collective.quickupload
.. _`coppe.govuploadify`: http://pypi.python.org/pypi/coppe.govuploadify

Share and Enjoy
---------------

``coppe.govupload`` would not have been possible without the contribution of
the following people:

- Silvestre Huens
- Joaquín Rosales
- Héctor Velarde
- Gonzalo Almeida

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

``coppe.govupload`` is an implementation of the `jQuery File Upload`_ plugin
for Plone.

Development sponsored by Open Multimedia.

.. _`jQuery File Upload`: http://blueimp.github.com/jQuery-File-Upload/
.. _`GitHub`: https://github.com/collective/coppe.govupload/contributors

Changelog
---------

1.0.1 (2017-03-29)
--------------------

### R2 - Sprint 8

- Permite qualquer tipo de extensão de arquivo para upload.


1.0rc1 (2017-01-10)
--------------------

### R2 - Sprint 3

- Fork do produto collective.upload para trabalhar com ArquivoBiblioteca
no produto mpdg.govbr.biblioteca

Project details


Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page