Foros del Web » Programación para mayores de 30 ;) » Java »

Subida de ficheros

Estas en el tema de Subida de ficheros en el foro de Java en Foros del Web. Hola a todos, Tengo un problema con una cuestión de subidas de ficheros dentro de mi aplicación web en java-jsp, os cuento el entorno y ...
  #1 (permalink)  
Antiguo 22/01/2013, 03:36
 
Fecha de Ingreso: mayo-2011
Mensajes: 16
Antigüedad: 12 años, 11 meses
Puntos: 0
Subida de ficheros

Hola a todos,

Tengo un problema con una cuestión de subidas de ficheros dentro de mi aplicación web en java-jsp, os cuento el entorno y que programas utilizo:

Eclipse - IDE
Tomcat 7 para desplegar mi war
Mysql 5 como base de datos
Tipo de proyecto:Dinamic Web Proyect


El problema es que dentro de mi propio proyecto, o sea en la carpeta WebContent creo una carpeta donde quiero grabar todos los ficheros que subo desde mi aplicacion web, pero me he encontrado el problema que ha veces se graban y a veces no, dandome el siguiente error cuando no se graba, parece que el tomcat 7 me cambia el directorio real por un directorio temporal, algunas veces si y otras veces no, y no entiendo que pasa:

Error que da cuando no se graba:

java.io.FileNotFoundException: C:\Users\aholguin\AppData\Local\Temp\upload_5bfcce d3_13c6177077c__8000_00000002.tmp (El sistema no puede encontrar el archivo especificado)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at org.apache.tomcat.util.http.fileupload.disk.DiskFi leItem.write(DiskFileItem.java:455)
at Servlets.servletMensajes.processRequestLoadFile(se rvletMensajes.java:866)
at Servlets.servletMensajes.processRequestGrabaMensaj eConductor(servletMensajes.java:259)
at Servlets.servletMensajes.processRequest(servletMen sajes.java:107)
at Servlets.servletMensajes.doPost(servletMensajes.ja va:56)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:722)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBas e.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(A ccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.p rocess(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnect ionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$SocketProce ssor.run(AprEndpoint.java:1805)
at java.util.concurrent.ThreadPoolExecutor.runWorker( Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (Unknown Source)
at java.lang.Thread.run(Unknown Source)


Mi codigo para la subida :

private boolean processRequestLoadFile(HttpServletRequest request,HttpServletResponse response, String codMensaje, String nombre) throws ServletException, IOException
{
boolean isMultipart =ServletFileUpload.isMultipartContent(request);
String codmensaje=codMensaje;
boolean rutaCreada=true;
boolean rutaAppCreada=true;
String raiz = Util.leerDirectorio(Atributos.PATHRAIZ);
String rutafichero = Util.leerDirectorio(Atributos.PATHFICHEROUPLOAD);
String nombrefichero="";
String extfichero="";
File path_Unidad = new File(raiz+"\\"+rutafichero+"\\"+nombre);

String root = request.getServletContext().getRealPath("/");
log.info("root:"+root);
String ruta=root+rutafichero+"\\"+nombre;

File path_App = new File(ruta);

if (isMultipart) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);

try {

List items = upload.parseRequest(request);
Iterator iterator = items.iterator();
while (iterator.hasNext()) {
FileItem item = (FileItem) iterator.next();

if (!item.isFormField() && !item.getName().equals(""))
{

String fileName = item.getName();
//if(item.getSize()<6200000)
//{
extfichero=fileName.substring(fileName.indexOf("." ));
nombrefichero=fileName.substring(0, fileName.indexOf("."))+"_"+codmensaje;

if (!path_Unidad.exists())
{
rutaCreada = path_Unidad.mkdirs();
}
if(rutaCreada)
{
File fichero_Unidad = new File(path_Unidad +"\\"+nombrefichero+extfichero);
item.write(fichero_Unidad);
log.info("Fichero creado OK:"+path_Unidad +"\\"+nombrefichero+extfichero);

}

if(!path_App.exists())
{
rutaAppCreada=path_App.mkdirs();
}
if(rutaAppCreada)
{
//String path_completo = request.getServletContext().getRealPath("/")+rutafichero+"\\"+nombre+"\\"+ nombrefichero +extfichero;
File fichero_app = new File(path_App +"\\"+ nombrefichero +extfichero);
item.write(fichero_app);
log.info("Fichero creado OK:"+path_App +"\\"+nombrefichero+extfichero);
}
//}else return false;
}
}

} catch (FileUploadException e) {
log.error(e.getMessage());
e.printStackTrace();
return false;
} catch (Exception e) {
log.error(e.getMessage());
e.printStackTrace();
return false;
}

}
return true;
}


Muchas gracias por todo, espero que alguien me pueda ayudar, por que me es necesario para acabar un proyecto.

Saludos

Etiquetas: ficheros, jsp, mysql, programa, servlet, string, subida
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:02.