Emm... quite interesting
Anyway if to lean back on Java Applet solution... I don't think there should be some single API to handle all the mentioned points
According to your tasks here is some kind of solutions combination...
I can't really have the standard "Choose file..." of the browser,
because there are many different files inside the CD, under many
different folders.
If you have a bootable CDs or something... In this case I can advise to use *.iso image file generation of you CD. You can use JIIC lib for this
...and concerning the uploading I can advise using HttpClient
(on client side) + FileUpload (on servlet side) that will allow to upload ~2Gb weight files... (HttpClient tips) In your CD (case of big file reading) I do recommend override FileBody.writeTo(OutputStream) method to set reading file by chunks supportor if your generated file is really huge you can additionally use RandomAccessFile to read/write files by index look at readFully() method
And one more thing...
...So I can't have my users choose all the files individually - even if I implement the HTML5 multi-selection, they would still have to navigate through all the sub-folders (there may be several levels). And plus this needs to work on IE8, so multi-selection won't work.
In Java Applet it will work :) If you just need some kind of multi selection (and it is not a bootable CD or something) you can use Swing's JFileChooser for this task. Take a look closer at method like setMultiSelectionEnabled(boolean)...
- ... concerning the
'...they would still have to navigate through all the sub-folders (there may be several levels)'
... you can simply (not to upload folders) but pre-pack those levels to lets say a zip file to upload the zip file to server (correct me if I am wrong here because the idea of levels is not pretty clear described in your question now) .
Nevertheless, it would be interesting to know more details because quite rare task as for web apps to upload the whole CDs... As a rule, it is a pretty heavy stuff :S
Report if that answer was helpful