FileUploader

Page history last edited by Scott González 2 mos ago

 

type: widget

release: N/A

priority: none

status: in planning

documentation: N/A

demo: LABS

 


 

1 - Description:

 

A file uploader extends the default single file browse tool with to allow for a custom UI for providing feedback, the ability to upload multiple files at once and a real-time progress bar for upload feedback.

 

A few jQuery plugins provide all or some of this functionality:

http://plugins.jquery.com/project/MultiFile/

http://www.fyneworks.com/jquery/multiple-file-upload/

http://15daysofjquery.com/multiple-file-upload-magic-with-unobtrusive-javascript/17/

http://jquery.webunity.nl/jQuery.uploader/landing (this is the latest version of the plugin that was documented on the jQuery site at http://docs.jquery.com/UI/Uploader)

 


 

2 - Visual Design:

 

 


 

 

3 - Functional Specifications/Requirements:

 

(Detailed descrition of how the script will be structured: defaults, options, architecture, extensibility, etc.)

 


 

4 - Markup & Style:

 

     4.1 Initial markup examples

 

     (Pre-enhanced HTML markup structure that will be transformed into the final widget. There may be multiple possible HTML markup options per widget: for example, for a slider, radiobuttons, inputs or selects could all be used. )

 

     4.2 Recommended transformed HTML markup

 

     (The HTML markup structure and classes that will be used by the scripts in the enhanced version) 

 

     4.3 Accessibility recommendation

 

    (Detailed recommendations for ARIA, HTML markup, CSS and javascript that will contribute to universal access and full section 508 accessibility for screen readers, mobile devices and any other devices) 

 

     4.4 CSS & Theme

 

    (Description of the CSS classes to be used for all states, how custom theming and Themeroller support will work.) 

 


 

5 - Latest version of plugin:

 

(Link to the latest version in the jQuery UI trunk here)

 


 

6 - Open issues being discussed

 

(Use this area to place things that we're hashing out like featuresand options we're not sure we should include, questions about how this fits into UI and relates to other widgets and utilities, known problems, whether features should be broken across multiple releases, etc.)

 


 

 

 

 

Comments (18)

profile picture

Jonathan Gotti said

at 5:15 pm on Jun 2, 2009

It must be considered to achieve this that the server side must be abble to send feedback on the upload state.
For example php on it's own can't achieve this without rarely installed extensions.

profile picture

Gilles said

at 3:29 am on Aug 19, 2009

When using a Flash based version this is doable. There is also the possibility to add a CGI backend, to allow more flexibility. However, this needs some additional configuration.

profile picture

Ca-Phun Ung said

at 4:32 am on Aug 19, 2009

Hey Giles,

I set the status back to "in planning" and demo link to "n/a". Links in the header should always point to resources in the UI repos.

jQuery.uploader looks really good and feature complete. Were you intending to add your plugin to UI?

profile picture

scottjehl said

at 8:15 am on Aug 19, 2009

This plugin looks nice.
Is it possible to develop this plugin in a way that doesn't depend on Flash? Or at least only using Flash if it's available? Also a solution that does not need to be configured to align with the backend would be ideal as well.
The first priority should be to make a native file input customizable in appearance and behavior. This portion shouldn't require Flash or any backend configuration.

I've seen some nice plugins that manipulate an input type=file element with some additional elements to at least make a single file uploader configurable with CSS and JS.
Here's one I've used that worked quite well (you apply the plugin to an element which could replace a file input, it doesn't use Flash, and submits using a generated iFrame):
http://valums.com/wp-content/uploads/ajax-upload/demo-jquery.htm

it works by actually using a hidden file input positioned over the clickable button, so you actually click the native input button while using it.

Obviously, this plugin isn't as full-featured as the example posted above, but it's a nice solution for configuring a native file input element, and then we could provide options for things that might require Flash, such as reporting upload progress back to a UI progressbar widget, uploading multiple files, and more.

Thoughts?

profile picture

Gilles said

at 9:57 am on Aug 19, 2009

@Ca-Phun ung:
yes i have been thinking about this for over 2 years (that is, i have suggested it many times but due to the fact that everybody is very busy, it just never came off it). I started today to convert my jquery.uploader to jQuery.ui.fileuploader (as in: rewriting to confirm with jQuery UI). As per Scots request (and the fact that i have seen it on other plugins which are MIT licensed) at first i am just "converting" my plugin, meaning it requires flash and basically works just like the plugin above but then using UI standards. Then we can think about other formats (both front-end as backend).

The main problem here is that this plugin can't be used "out of the box" you have to do some event handling and backend programming in order for it to work, but that should all be self explanatory when you take a look at the demo's. I've decided to use SWFobject (also MIT licensed) for Flash detection since you can build that into the plugin, but better is to not reinvent the wheel. I'll keep you guys updated.

profile picture

Ca-Phun Ung said

at 10:32 am on Aug 19, 2009

I see, that's good news! I'm glad you're willing to contribute your code.

Do you want to add this stuff to the UI labs? I'm not sure if you have commit access?

I think we could have the JS and demo page on the UI repos with Flash and backend code on your server (if you're willing)?

I think FileUploader could become something of a standard API that anyone could create their own Flash/Backend scripts to work with as long as they adhere to the FileUploader API. Rather than focus on Flash we should focus on the JS.

profile picture

Gilles said

at 2:07 am on Aug 20, 2009

On your last line; that is kinda hard. Since the entire callbacks and multi-file selection is all based on Flash. Lets first add this to the labs (no i don't have write access yet) and lets see how we can evolve from there.

profile picture

Ca-Phun Ung said

at 3:13 am on Aug 20, 2009

Yes, it's a long shot but I think it's something that would set this UI plugin apart from the rest. Basically it's the same but I'm looking at it from the JS side. We define a set of API calls for the FlashUploader to adhere to and that is what sets the standard.

I agree that we should first get what we have converted to UI then develop from there.

profile picture

Jörn Zaefferer said

at 6:14 am on Aug 20, 2009

That make sense, considering fileupload support in HTML5, eg. as implemented in Firefox 3.5. In the long term, Flash should be just an optional implementation, not the API.

profile picture

Jörn Zaefferer said

at 2:13 pm on Aug 19, 2009

Can you replace SWFObject with the flash plugin? http://jquery.lukelutman.com/plugins/flash/

profile picture

Gilles said

at 2:06 am on Aug 20, 2009

I've replaced SWFObject with the flash plugin. Didn't think it was so easy ;)

profile picture

Gilles said

at 7:58 am on Aug 24, 2009

Well, i've removed the jQuery flash plugin from my project since it produced embed tags in IE. This way my externally exposed functions are not callable. I've reverted it back to my own (old but functioning) code which is a combination of jQuery.flash plugin (for Flash detection) and some code from the Flash detection kit. Anyway; demo1 (see url on top of the page) is working again, so i'll think i'll add the project to the labs in a few days.

profile picture

Ca-Phun Ung said

at 8:03 am on Aug 24, 2009

Great, thanks Gilles!

profile picture

Gilles said

at 4:34 am on Sep 8, 2009

Guys i added the first demo (and complete source) to the labs, please tell me what you think of this.

profile picture

Ca-Phun Ung said

at 9:25 am on Sep 9, 2009

Wohooo! Gonna check this out over the weekend! Thanks :)

profile picture

valums said

at 3:56 am on Nov 2, 2009

Hi,

I am an author of AJAX Upload plugin http://valums.com/ajax-upload/ ,
and I would like to help developing a jQuery UI widget.

As I see, Gilles is already in process of creating a flash based widget,
and I would like to know what do you have right now.

I was thinking that it would be great if Flash was only required if developers
would like to see the progress-bar, but for others (that have trouble with Flash upload
because of the server settings), and for users without Flash,
and for newer browsers (which support XHR progress event and File API)
files uploads would be done with JavaScript.

Here is a list what's currently possible with the pure JavaScript.

In all browsers
Multiple file uploads using upload button styled with CSS
(http://valums.com/wp-content/uploads/ajax-upload/demo-jquery.htm)

Safari 4, Opera and upcoming Firefox 3.6 support selecting multiple files using file selection dialog
<input type=”file” multiple> Safari, Firefox
<input type=”file” min="0" max="73"> Opera

With Safari 4 and Firefox 3.5 it is possible to show upload progress using XHR onprogress event,
but in my opinion it's too costly to implement it right now.

What do you think?

profile picture

Scott Allen said

at 1:21 pm on Nov 3, 2009

Our business is looking for this exact kind of widget. We haven't found anything that works really well for multiple files with a progress bar. My boss and I are wondering if you know when this widget might launch - if you have a deadline time frame?

profile picture

Scott González said

at 6:18 pm on Nov 3, 2009

This is currently not a prioritized plugin, which means at the earliest it could be a candidate for middle of next year, but as of right now there is no planned release date.

You don't have permission to comment on this page.