I need to create a form that will allow, among other things, a user to upload an unknown number of files to the server running Tomcat. It would be nice if the form could add upload slots to the form as needed. I haven't found much useful on the subject, so I thought I would poll the community.
This only answers the server side matter which is not explicitly asked in the question. The question was more targeted to the client side matter.
BalusC
2010-06-16 15:22:08
@BalusC: That's why I upvoted the answer provided by kgiannakakis. Provides the complete solution.
dpb
2010-06-17 07:27:23
+4
A:
You need an ajax enabled form that can add/remove input file elements:
<table border="1px">
<tbody class="files">
<tr><td><a class="delete" href="#">Delete</a></td><td><input class="fileSelect" type="file" name="file" /></td></tr>
<tr><td><a class="delete" href="#">Delete</a></td><td><input class="fileSelect" type="file" name="file" /></td></tr>
<tr><td><a class="delete" href="#">Delete</a></td><td><input class="fileSelect" type="file" name="file" /></td></tr>
<tr><td><a class="delete" href="#">Delete</a></td><td><input class="fileSelect" type="file" name="file" /></td></tr>
</tbody>
<tbody>
<tr><td><a class="add" href="#">Add</a></td><td><input id="submitButton" type="submit" value="Upload"/></td></tr>
</tbody>
</table>
Using jQuery:
$(function() {
$(".delete").live("click", function() {
$(this).parent().parent().remove();
});
$(".add").click(function() {
$("tbody.files").append("<tr><td><a class='delete' href='#'>Delete</a></td><td><input class='fileSelect' type='file' name='file' /></td></tr>");
});
});
If you use Apache Commons FileUpload, then the server code is the same, no matter how many files are sent. FileUpload allows you to iterate over all uploaded files.
kgiannakakis
2010-06-16 14:52:42