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

Enviar archivos entre 2 jsp

Estas en el tema de Enviar archivos entre 2 jsp en el foro de Java en Foros del Web. Buenas Tengo el siguiente problema: Una jsp consulta una base de datos el resultado lo guarda a un archivo y despues debe tomar el archivo ...
  #1 (permalink)  
Antiguo 21/04/2010, 12:03
Avatar de darkngel  
Fecha de Ingreso: agosto-2007
Mensajes: 46
Antigüedad: 16 años, 8 meses
Puntos: 0
Pregunta Enviar archivos entre 2 jsp

Buenas
Tengo el siguiente problema:
Una jsp consulta una base de datos el resultado lo guarda a un archivo y despues debe tomar el archivo generado y enviarselo a otra jsp que debe procesar lo recibido, de que manera puedo realizar esto?, intente establecer el archivo generado por defecto en un input file y enviarlo, pero por seguridad esto no es posible.

Cualquier ayuda es bien recibida.
Gracias por anticipado
  #2 (permalink)  
Antiguo 07/05/2010, 00:36
 
Fecha de Ingreso: marzo-2010
Mensajes: 62
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Enviar archivos entre 2 jsp

Hola: todavia soy novato pero ps haber si te puedo ayudar.
No entiendo quieres enviar el archivo o la ruta del archivo?? y si es la ruta, por que no la envias con el setAttribute y en el otro jsp lo recoges y lo asignas ahora si al input file tal vez eso si te lo permita hacer, o con un File ya le das esa ruta y lo procesas.

Espero te sirva.

Saluditos.
  #3 (permalink)  
Antiguo 12/05/2010, 02:31
 
Fecha de Ingreso: febrero-2010
Mensajes: 128
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Enviar archivos entre 2 jsp

tienes que usar librerias jakarta

Si sigues interesado en cómo subir una imagen, dime, y te paso mi código y te comento todos los problemas que te pueden surgir, ya que recientemente lo necesité para crear un foro y subir imágenes de usuarios.

Saludos
  #4 (permalink)  
Antiguo 12/05/2010, 02:38
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Enviar archivos entre 2 jsp

Bueno, para mi sería mejor que lo guardase en una ruta, y luego recoger la ruta en el servlet y enviarla a la siguiente jsp, desde donde se recogería el archivo.
  #5 (permalink)  
Antiguo 12/05/2010, 08:19
Avatar de darkngel  
Fecha de Ingreso: agosto-2007
Mensajes: 46
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Enviar archivos entre 2 jsp

Muchas gracias por sus respuestas pero creo que no me hecho entender muy bien . De un servidor XX debo pasarle un archivo a otro servidor YY, a traves de dos jsp, por politicas de seguridad, no permite dejar un valor por defecto en un input file.

Denis127 te agradeceria si me permitieras ver tu codigo .
  #6 (permalink)  
Antiguo 13/05/2010, 06:12
 
Fecha de Ingreso: febrero-2010
Mensajes: 128
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Enviar archivos entre 2 jsp

mi código es para coger un fichero del cliente y guardarlo en mi servidor, pero supongo que podrías ampliarlo de alguna otra manera...

adelanto, que no es un código muy limpio y quizas te lies entre los path.. la cosa es coger una imagen y guardarla en la carpeta /img/avatar/nombre_Imagen
quizas si pusieras una ruta completa de la otra máquina y cambiando alguna cosilla de conseguir el AbsolutePath y eso... aunque dudo que el firewall te deje hacer eso..

suerte!

Código:
//llamada al método
String upload = subirImagen(request,out,"imagen.jpg");

public String subirImagen(HttpServletRequest request, PrintWriter out, String nombre_Imagen) {
        // 1. obtengo el directorio donde guardare los archivos, desde un parametro de
        // contexto en el archivo web.xml
        try {
            String dirUploadFiles = getServletContext().getRealPath("img/avatar/");

            System.out.println(dirUploadFiles);
            // 2. Si la peticion es de tipo multi-part,
            // static boolean isMultipartContent() devuelve true/false
            if (ServletFileUpload.isMultipartContent(request)) {

                // 3. crear el arhivo factory
                // DiskFileItemfactory es una implementacion de FileItemfactory
                // esta implementacion crea una instacia de FileItem que guarda su
                // contenido ya sea en la memoria, para elementos pequeños,
                // o en un archivo temporal en el disco, para los
                // elementos de mayor tamaño
                FileItemFactory factory = new DiskFileItemFactory();


                // 4. crear el servlet upload
                // es un API de alto nivel para procesar subida de archivos
                // Por defecto la instancia de ServletFileUpload tiene los siguientes valores:
                // * Size threshold = 10,240 bytes. Si el tamaño del archivo está por debajo del umbral,
                //   se almacenará en memoria. En otro caso se almacenara en un archivo temporal en disco.
                // * Tamaño Maximo del cuerpo de la request HTTP = -1.
                //   El servidor aceptará cuerpos de request de cualquier tamaño.
                // * Repository = Directorio que el sistema usa para archivos temporales.
                //   Se puede recuperar llamando a System.getProperty("java.io.tmpdir").
                ServletFileUpload upload = new ServletFileUpload(factory);
                /* 5. declaro listUploadFiles
                 * Contendrá una lista de items de archivo que son instancias de FileItem
                 * Un item de archivo puede contener un archivo para upload o un
                 * campo del formulario con la estructura simple nombre-valor
                 * (ejemplo: <input name="text_field" type="text" />)
                 *
                 * Podemos cambiar las opciones mediante setSizeThreshold() y setRespository()
                de la clase DiskFileItemFactory y el
                método setSizeMax() de la clase ServletFileUpload, por ejemplo:

                DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
                diskFileItemFactory.setSizeThreshold(40960); // bytes

                File repositoryPath = new File("/temp");
                diskFileItemFactory.setRepository(repositoryPath);

                ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
                servletFileUpload.setSizeMax(81920); // bytes

                 *
                 */
                // limito a 300 Kb el humbral del tamaño del archivo a subir
                // Long.parseLong( getServletContext().getInitParameter( "maxFileSize" ) )
                //upload.setSizeMax(new Long(getServletContext().getInitParameter("maxFileSize")).longValue()); // 1024 x 300 = 307200 bytes = 300 Kb
                upload.setFileSizeMax(Long.parseLong("300000"));
                List listUploadFiles = null;
                FileItem item = null;

                try {
                    // 6. adquiere la lista de FileItem asociados a la peticion
                    listUploadFiles = upload.parseRequest(request);

                    /* 7. Iterar para obtener todos los FileItem
                     * vamos a trabajar con generalidad
                     * programaremos como si quisieramos leer todos los
                     * campos sean 'simples' o 'file'. Por ello iteramos
                     * sobre todos los FileItem que recibimos:
                     * Los parámetros simples los diferenciaremos de los parámetros 'file'
                     * por medio del método isFormField()
                     */
                    Iterator it = listUploadFiles.iterator();
                    while (it.hasNext()) {
                        item = (FileItem) it.next();
                        // 8. evaluamos si el campo es de tipo file, para subir al servidor
                        if (!item.isFormField()) {
                            //9. verificamos si el archivo es > 0
                            if (item.getSize() > 0) {
                                // 10. obtener el nombre del archivo
                                String nombre = item.getName();
                                // 11. obtener el tipo de archivo
                                // e. .jpg = "image/jpeg", .txt = "text/plain"
                                String tipo = item.getContentType();
                                // 12. obtener el tamaño del archivo
                                long tamaño = item.getSize();
                                // 13. obtener la extension
                                String extension = nombre.substring(nombre.lastIndexOf("."));

                                System.out.println("Nombre: " + nombre + "<br>");
                                System.out.println("Tipo: " + tipo + "<br>");
                                System.out.println("Extension: " + extension + "<br>");
                                // 14. determinar si el caracter slash es de linux, o windows
                                //String slashType = ( nombre.lastIndexOf( "\\" ) > 0 ) ?  "\\" : "/"; // Windows o Linux
                                // 15. obtener la ultima posicion del slash en el nombre del archivo
                                //int startIndex = nombre.lastIndexOf( slashType );
                                // 16. obtener el nombre del archivo ignorando la ruta completa
                                //String myArchivo = nombre.substring( startIndex + 1, nombre.length() );
                                // 17. Guardo archivo del cliente en servidor, con un nombre 'fijo' y la
// extensión que me manda el cliente,
                                // Create new File object
                                nombre=nombre_Imagen;
                                File archivo = new File(dirUploadFiles, nombre);
                                System.out.println(archivo.getAbsolutePath());
                                System.out.println(archivo.getPath());
                                // 18. Write the uploaded file to the system
                                item.write(archivo);
                                if (archivo.exists()) {
                                    System.out.println("GUARDADO " + archivo.getAbsolutePath() + "</p>");
                                } else {
                                    // nunca se llega a ejecutar
                                    System.out.println("FALLO AL GUARDAR. NO EXISTE " + archivo.getAbsolutePath() + "</p>");
                                }

                            }
                        }
                    }

                } catch (FileUploadException e) {
                    e.printStackTrace();
                    return null;
                } catch (Exception e) {
                    e.printStackTrace();
                    return null;
                }

            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        return "/img/avatar/"+nombre_Imagen;
    }
  #7 (permalink)  
Antiguo 13/05/2010, 12:18
Avatar de darkngel  
Fecha de Ingreso: agosto-2007
Mensajes: 46
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Enviar archivos entre 2 jsp

Gracias, lo probare y les comento...

Etiquetas: enviar, jsp
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:59.