I’ve inherited a Java web app that actually uses a Silverlight XAP for one small section of functionality, which allows users to upload large batches (1+) of images to a directory on the server.
The business requirements are provided in more detail below, but can be summarized as follows:
- Users must be able to upload multiple images at the same time – if the user has 500 images to upload they shouldn’t have to click a button, select the next file, and click “upload” 500 times; they should be able to select all 500 files from the local file system and upload them as a single “batch”
- The file upload component must be AJAX or AJAX-like (does not require a page redirect/refresh)
The developer who chose Silverlight did so because:
- He knew C# and used to be a Silverlight developer 😉
- Silverlight does meet those requirements
- Silverlight has (according to him) better browser coverage than our JS technology (jQuery)
When management found out that Silverlight was chosen (which they only did during this hand-off!), they flipped out because Microsoft/Silverlight is not a part of our standards/platform.
I’ve been asked to research what it would take to re-write this in something that isn’t Silverlight and is standards-compliant. We’re a Java camp, and have been given the following acceptable candidates for technology selection:
- Any Java view technology that could satisfy these requirements (GWT, maybe even JSF?!?) – this would be my preference
- JavaScript/jQuery/QooxDoo/etc.
- Applets (ehhh…)
- Flash (I have no experience developing Flash/Flex and prefer this the least but will entertain the idea for the company’s sake)
Of course, developer skill sets weigh-in heavily. The project has been handed to me and one other developer. Both of us have decent JS experience, strong Java and JSP background, but zero Flash.
The most important thing here is that a user can have the following experience:
- They click a button (which would be a part of this component) that reads “
Select Images“ - A modal dialog pops up (modality is my personal “requirement”, but not mandatory though)
- Dialog allows them to pick a folder on their local file system, and select 1+ image files from inside that folder
- Dialog has an “
Upload Now” button, once user clicks it the dialog disappears and the component shows a progress bar of each photo being uploaded, sequentially
I’ve spent all afternoon researching GWT, JSF, ICEFaces and jQuery, and they all seem like they could handle these requirements, but I have not seen anything that assures me.
My question is: is there a Java solution that can accomplish this, and if so, what (GWT, JSF, RichFaces, etc.)?
If not, then can jQuery or any other JS lib do this?
If not, do I have any other options besides applets or Flash (and, of course, Silverlight)?
I would honestly rather consider pitching a new technology to our Enterprise Architecture committee than to do an applet (which is the anethma of Java development) or Flash (which I would have to learn from scratch).
Thanks in advance for any nudges in the right direction!
Edit
I know many of you may be tempted to answer by suggesting completely different alternative solutions. Please see my comment to @GolezTol‘s answer, but basically these constraints are hard-bounded and beyond my control.
Java must be installed and available too. But if a use should be able to upload 500 files, I would choose to give them an FTP account, or upload the files in a compressed format like a zip file, which I think any OS can create natively. Java, Flash, Silverlight.. All of those are components that are not always available. And I don’t think a web interface is the most suitable for uploading so many images.