Subiendo archivos al servidor
Hola, al utilizar un servlet para subir archivos me encuentro con que no tira ningun error (se completa con éxito) pero el archivo no es subido. Sin embargo en mi pc local si funciona.
try{
HttpSession s = request.getSession();
String pagllama = (String)(s.getAttribute("pagllama"));
String archivo="";
System.out.println(archivo);
PrintWriter out = response.getWriter();
//Ruta donde se guardara el fichero
//File destino=new File("E:\Desarrollo\JAVA\Workspace");
// File destino=new File("http://200.58.120.206/new_img");
//File destino=new File("../../new_img/");
//File destino=new File("http://200.58.120.206:8080/new_img/");
//File destino=new File(request.getContextPath());
//File destino=new File("/public_html/webapps/new_img");
//File destino=new File("/tmp");
File destino=new File("..//tmp//");
// 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();
while(it.hasNext()){
//Rescatamos el fileItem
FileItem item=(FileItem)it.next();
//Comprobamos si es un campo de formulario
if(item.isFormField())
//Hacemos lo que queramos con el.
out.println(item.getFieldName()+"<br>");
else
{
//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());
//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()));
out.println("Fichero subido");
s.setAttribute("exitoarchivo", "Archivo subido: " + file.getName());
s.setAttribute("file", file.getName());
s.removeAttribute("error");
response.sendRedirect("./" + pagllama);
}
}
}
}
catch (Exception e) {
HttpSession s1 = request.getSession();
s1.setAttribute("error", "Error al subir fichero:" + e.getMessage());
response.sendRedirect("./errores.jsp");
}
les adjunto el servlet q estoy utilizando
try{
HttpSession s = request.getSession();
String pagllama = (String)(s.getAttribute("pagllama"));
String archivo="";
System.out.println(archivo);
PrintWriter out = response.getWriter();
//Ruta donde se guardara el fichero
//File destino=new File("E:\Desarrollo\JAVA\Workspace");
// File destino=new File("http://200.58.120.206/new_img");
//File destino=new File("../../new_img/");
//File destino=new File("http://200.58.120.206:8080/new_img/");
//File destino=new File(request.getContextPath());
//File destino=new File("/public_html/webapps/new_img");
//File destino=new File("/tmp");
File destino=new File("..//tmp//");
// 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();
while(it.hasNext()){
//Rescatamos el fileItem
FileItem item=(FileItem)it.next();
//Comprobamos si es un campo de formulario
if(item.isFormField())
//Hacemos lo que queramos con el.
out.println(item.getFieldName()+"<br>");
else
{
//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());
//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()));
out.println("Fichero subido");
s.setAttribute("exitoarchivo", "Archivo subido: " + file.getName());
s.setAttribute("file", file.getName());
s.removeAttribute("error");
response.sendRedirect("./" + pagllama);
}
}
}
}
catch (Exception e) {
HttpSession s1 = request.getSession();
s1.setAttribute("error", "Error al subir fichero:" + e.getMessage());
response.sendRedirect("./errores.jsp");
}
les adjunto el servlet q estoy utilizando
