Resultados 1 al 3 de 3

Tema: Como subir archivos al tomcat con struts

  1. #1 Como subir archivos al tomcat con struts 
    Medio
    Fecha de ingreso
    Nov 2009
    Mensajes
    62
    Descargas
    0
    Uploads
    0
    Hola! Estoy intentando subir archivos al tomcat desde mi proyecto usando el framework struts. Encontres un tutorial de como hacerlo, que me puedo ejecutar correctamente. El problema es, que en ningun momento te dicen como meterle la ruta donde lo quieres guardar y no encuentro ninguna funcion donde especificarlo. Mi codigo es el siguiente:
    Tengo el siguiente Action de struts con su correspondiente form bean:

    public class UploadAction extends org.apache.struts.action.Action {

    /* forward name="success" path="" */
    private static final String SUCCESS = "success";

    /**
    * This is the action called from the Struts framework.
    * @param mapping The ActionMapping used to select this instance.
    * @param form The optional ActionForm bean for this request.
    * @param request The HTTP Request we are processing.
    * @param response The HTTP Response we are processing.
    * @throws java.lang.Exception
    * @return
    */
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {




    if (form instanceof UploadForm)
    {

    UploadForm formulario = (UploadForm) form;

    FormFile fichero = formulario.getTheFile();
    String contentType = fichero.getContentType();
    String nombreFichero = fichero.getFileName();
    int tamFichero = fichero.getFileSize();
    byte[] datosFichero = fichero.getFileData();
    System.out.println("Tipo: " + contentType);
    System.out.println("Nombre: " + nombreFichero);
    System.out.println("Tamano: " + tamFichero);

    try {
    //guarda los datos del fichero
    ByteArrayOutputStream flujoSalida = new ByteArrayOutputStream();
    InputStream flujoEntrada = fichero.getInputStream();
    // solo si el archivo es de menos de 4MB
    if (tamFichero < (4*1024000))
    {
    byte[] buffer = new byte[8192];
    int bytesLeidos = 0;
    while ((bytesLeidos = flujoEntrada.read(buffer, 0, 8192)) != -1)
    {
    flujoSalida.write(buffer, 0, bytesLeidos );

    }

    String datos = new String(flujoSalida.toByteArray());
    }
    else
    {
    String datos = new String("Fichero de más de 4MB: no pudo almacenarse." +
    " Tamano del fichero: " + tamFichero + " bytes.");
    }
    }
    catch(Exception e)
    {}

    }

    return mapping.findForward(SUCCESS);
    }
    //RETURN NULL;
    }
    Y mi jsp es:

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
    <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <html>
    <head>
    <title>Ejemplo de SUBIDA DE FICHEROS</title>
    </head>
    <body>
    <!--
    The most important part is to declare your form's enctype to be
    "multipart/form-data", and to have a form:file element that maps
    to your ActionForm's FormFile property
    -->
    <div align=center>
    <html:form action="upload.do" enctype="multipart/form-data">
    <p>Introduzca el nombre del fichero a subir:&nbsp;&nbsp;<br />
    <html:file property="theFile" /></p>
    <p><html:submit /></p>
    </html:form>
    </div>
    </body>
    </html>

    Todo configurado correctamente mediante el struts-config.xml, ya que se ejecuta correctamente, solo que sin especificarle la ruta de destino.
    ¿Alguien sabe alguna forma de decirle en el action en que carpeta de tomcat quiero que se guarde?? O sabeis alguna otra forma de subir archivos al tomcat usando struts??
    Gracias por anticipado. Salu2
    Citar  
     

  2. #2  
    Medio
    Fecha de ingreso
    Nov 2009
    Mensajes
    62
    Descargas
    0
    Uploads
    0
    La ruta del fichero se especifica en flujoSalida. Para almacenar el fichero en donde queramos, crearemos un fichero copia del anterior en la ruta que queramos. Para ello en lugar de ser flujoSalida un array:
    ByteArrayOutputStream flujoSalida = new ByteArrayOutputStream();

    Será un fichero de salida que creamos con el nombre que queramos:

    FileOutputStream flujoSalida =
    new FileOutputStream(new File("ruta/nombreficheronuevo.extension"));

    Espero que si alguien tiene la misma duda que tuve yo, esto le sirva
    Citar  
     

  3. #3  
    Moderador Global Avatar de hystd
    Fecha de ingreso
    Jul 2005
    Ubicación
    1, 11, 21, 1211...
    Mensajes
    1.596
    Descargas
    58
    Uploads
    0
    Hace tiempo tuve que hacer algo similar. La idea era copiar el fichero temporal creado en tomcat con el contenido del fichero mandado por el cliente, en la ruta que tu le especifiques. Es decir, el truco está en una simple rutina para copiar ficheros:

    BufferedInputStream bufferIn = new BufferedInputStream (new FileInputStream(fichero));
    BufferedOutputStream bufferOut = new BufferedOutputStream(new FileOutputStream("ruta//nombrefichero.ext"));
    while (bufferIn.read(leidos, 0, 1024)>=0){ //lee de 1K en 1K
    bufferOut.write(leidos, 0, 1024);
    }

    Bueno, sólo es otra alternativa, aunque un poco tarde, pues ya encontraste tu solución...

    Un saludo.
    El optimista tiene ideas, el pesimista... excusas

    Citar  
     

Temas similares

  1. cómo subir imágenes al foro
    Por aznarfran en el foro GENERAL
    Respuestas: 2
    Último mensaje: 02-04-2012, 13:53
  2. Subir ficheros a un servidor con java y tomcat.
    Por smaug_ en el foro PROGRAMACION DESKTOP
    Respuestas: 3
    Último mensaje: 17-11-2011, 16:47
  3. Como subir un enlace.
    Por Collins en el foro OFF-TOPIC
    Respuestas: 1
    Último mensaje: 12-05-2008, 15:05
  4. ¿Como puedo subir algunos archivos?
    Por Santi.Neng en el foro DIGITAL+
    Respuestas: 1
    Último mensaje: 13-09-2006, 21:54
  5. subir archivos a shell
    Por THE_CROW en el foro LINUX - MAC - OTROS
    Respuestas: 10
    Último mensaje: 12-11-2002, 21:26

Marcadores

Marcadores

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •