Hola amigo. Es asi como dices.
Los input los creo con un for donde el indice del limite del for será el numero de archivos (dimension )que haya subido el usuario. por ejemplo.
Si en tu JSP el usuario crea 3 campos file, guardo este 3 (dimension )en un campo de texto tipo hidden, para recibir este dato por post en archivo JAVA o JSP (El que estes usando).
Código HTML:
Ver original<input type="hidden" name="dimension" value="<%= ///variable que contenga esta dimension, en este caso 3 >%">
Código java:
Ver originalint dimension = request.getParameterValues("dimension");
Posteriormente con un ciclo for comienzo a recorrer los arreglos de archivos
supongamos que el usuario había escogido 3 campos tipo file y subido 3 archivos.
Código java:
Ver originalint dimension = request.getParameterValues("dimension");
String ruta_destino
= "home/localhost/directorio";
//Para obtener el nombre de los archivos y las rutas temporales haces en el for (antes del copy) las //invocaciones request.
for(int i=0; i<dimension; i++){
//La siguiente linea es para copiar un archivo de la ruta temporal a la ruta del servidor PERO
// ES EN PHP, en java no se como sea.
copy(ruta_file[i],ruta_destino+"/"+nombre_archivo[i]);
}