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

Problema con FileUpload en servidor linux

Estas en el tema de Problema con FileUpload en servidor linux en el foro de Java en Foros del Web. Buenas tardes Tengo un codigo en JSP y Servlet el cual me permite subir archivos al servidor para esto utilizo las librerias commons.FileUpload, en una ...
  #1 (permalink)  
Antiguo 26/01/2009, 13:13
 
Fecha de Ingreso: enero-2009
Mensajes: 11
Antigüedad: 15 años, 3 meses
Puntos: 0
Problema con FileUpload en servidor linux

Buenas tardes

Tengo un codigo en JSP y Servlet el cual me permite subir archivos al servidor para esto utilizo las librerias commons.FileUpload, en una maquina local Win xp funciona bien, no se que debo cambiar al codigo para que este me permita subir los archivos al servidor de mi red Linux, o si tal vez tenga que utilizar un servidor FTP. Gracias de antemano a las personas que me puedan colaborar

********Codigo****************Servlet*********

import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;

import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.DiskFileItemFac tory;
import org.apache.commons.fileupload.servlet.ServletFileU pload;
import java.util.*;

/**
*
* @author Os
*/
public class UploadFichero extends HttpServlet {

/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
boolean ok = getNSaveFile(request,response);
response.setContentType("text/html");
PrintWriter out = response.getWriter();
if (ok) {
System.out.println("La transferencia del archivo fue exitosa.");
} else {
RequestDispatcher dispatcher5;
dispatcher5 = getServletContext().getRequestDispatcher(
"/prue.jsp");
dispatcher5.forward(request, response);
System.out.println("Fallo en transferencia de archivo.");
}
out.close();
}

public boolean getNSaveFile(HttpServletRequest request,HttpServletResponse response) {
try {
// Chequea que sea un request multipart (que se este enviando un file)
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
System.out.println("Is multipart=" + isMultipart);
DiskFileItemFactory factory = new DiskFileItemFactory();
File destino=new File("C:\\TEMP\\");
// maxima talla que sera guardada en memoria
factory.setSizeThreshold(4096);
// si se excede de la anterior talla, se ira guardando temporalmente, en la sgte direccion
factory.setRepository(new File("d:/"));
ServletFileUpload upload = new ServletFileUpload(factory);
//maxima talla permisible (si se excede salta al catch)
upload.setSizeMax(10000000);
List fileItems = upload.parseRequest(request);
File file= null;
//obtiene el file enviado
Iterator i = fileItems.iterator(); //fileItems == lista iterator==i

while(i.hasNext()){
//Rescatamos el fileItem
FileItem item=(FileItem)i.next();
//Comprobamos si es un campo de formulario
if(item.isFormField())
//Hacemos lo que queramos con el.
System.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()));
System.out.println("Fichero subido");
System.out.println("Ruta: "+destino);
RequestDispatcher dispatcher5;
dispatcher5 = getServletContext().getRequestDispatcher(
"/rta_publicacion.jsp");
dispatcher5.forward(request, response);

}
}
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
return false;
}
return true;
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
processRequest(request, response);

}

}

*********************JSP*******************
<form method="post" enctype='multipart/form-data' action="/EstudianteWAR/uploadFichero">
<p class="Estilo1">Seleccione el archivo a enviar al servidor</p>
<input type="file" name="fichero"> <p></p>
<input type="submit" value="Cargar">
</form>
  #2 (permalink)  
Antiguo 05/02/2009, 10:09
Avatar de xlugo2002  
Fecha de Ingreso: noviembre-2002
Ubicación: Puebla, México
Mensajes: 474
Antigüedad: 21 años, 5 meses
Puntos: 0
Respuesta: Problema con FileUpload en servidor linux

De Win a Linux supongo que solo deberia cambiar el File.Sepataror el cual es el separador de directorios.

Yo necesito crear un cliente FTP en ambiente Web en lugar de usar lo que tú usas (libreria), creo que la forma de hacerlo es escribir un applet . O se me ocurre usar Java Web Start.

YO creo que intentaré usar un applet como cliente FTP, estoy empezando a ver como lo hago
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 03:15.