Subir archivos java

Jose
26 de Mayo del 2009
Hola tengo un codigo java, que funciona bien, en un jsp para subir archivos. Cuando sube el archivo el nombre de este es toda la ruta del origen y luego cuando voy a leerlo me da error.
Este es el codigo
//Ruta donde se guardara el fichero
File destino=new File("/usr/share/tomcat5.5/webapps/coordinadora/articulos/");
//Vector que contendra los registros de la base de datos
Vector registros=new Vector();
// Convertimos el HTTPRequest en un ContextRequest,
// este paso es necesario en la ultima version,
// ya que los metodos de las versiones anteriores
// se han quedado desfasados.
ServletRequestContext src=new ServletRequestContext(request);

//Si el formulario es enviado con Multipart
if(ServletFileUpload.isMultipartContent(src)){
//Necesario para evitar errores de NullPointerException
DiskFileItemFactory factory = new DiskFileItemFactory((1024*1024),destino);
//Creamos un FileUpload
ServletFileUpload upload=new ServletFileUpload(factory);
//Procesamos el request para que nos devuelva una lista
//con los parametros y ficheros.
List lista = upload.parseRequest(src);
File file= null;
//Recorremos la lista.
Iterator it = lista.iterator();
String r=null;
while(it.hasNext()){
//Rescatamos el fileItem
FileItem item=(FileItem)it.next();
//Comprobamos si es un campo de formulario
if(!((item.getFieldName().equals("file") || item.getFieldName().equals("oculto")))){
//Hacemos lo que queramos con el.
out.println(item.getFieldName()+":"+item.getString()+"<br>");
r=item.getName();
registros.addElement(item.getString());
}else if (item.getFieldName().equals("file")){
//Si no, es un fichero y lo subimos al servidor.
//Primero creamos un objeto file a partir del nombre del fichero.
file=new File(item.getName());
registros.addElement(file.getName());
//Lo escribimos en el disco
// usando la ruta donde se guardara el fichero
// y cogiendo el nombre del file
// Nota: Se podria hacer usando el objeto item en vez del file directamente
// Pero esto puede causar incompatibilidades segun que navegador, ya que
// algunos solo pasan el nombre del fichero subido, pero otros
// como Iexplorer, pasan la ruta absoluta, y esto crea un pequeño problema al escribir
// el fichero en el servidor.
item.write(new File(destino,file.getName()));
Connection conn=conexion.getConn("","3306","","","");
PreparedStatement sentencia=null;
try{
String fecha=(String)registros.elementAt(4)+"/"+(String)registros.elementAt(3)+"/"+(String)registros.elementAt(2);
// String[] doc=((String)registros.elementAt(6)).split("\\\\");
String ruta="articulos/"+file.getName();
sentencia=conn.prepareStatement("INSERT INTO articulos (titulo,descripcion,fecha,doc,seccion) VALUES (?,?,?,?,?)");
sentencia.setString(1,(String)registros.elementAt(0));
sentencia.setString(2,(String)registros.elementAt(1));

sentencia.setString(3,fecha);
sentencia.setString(4,ruta);
sentencia.setString(5,(String)registros.elementAt(5));
sentencia.executeUpdate();
out.println(item.getFieldName()+":"+file.getName()+"<br>");
out.println("Insertado con exito");
}catch(SQLException ex){
System.out.println(ex.toString());
}


}
}