There is a widely used Jakarta component (it's named commons-fileupload).
There are a few things you must consider (no matter what file upload component you use):
. Do you want to let the uploaded files available for download? In this case it makes things easier to deploy your application in an exploded (not archived) format;
. Is your J2EE server (or Tomcat) behind a web server (like IIS or Apache)? In that case the uploaded files must be copied to the web server layer;
. Is there load-balancing scheme (or a cluster)? In that case, the uploaded file must be available to ALL machines;
Uploading the file directly into your application's folder is a bad design, acceptable only in the simplest applications. A simple redeployment, for example, might delete all the previously uploaded files.