none
Como guardar un archivo .CVS en memoria o alguna variable del navegador para descargarlo en una accion determinada RRS feed

  • Pregunta

  • Hola

    Tengo en mi aplicación MVC una función ajax la cual se encarga de realizar determinadas funciones. Dependiendo de los resultados, pudiera tener que generar un archivo, pero en la respuesta al cliente solo debo mostrarle una alerta y en caso de haber generado el archivo, se mostrara un boton "Exportar", el cual es el que abrirá el archivo, únicamente si el usuario el da click.

    Esto es relativamente fácil, normalmente generaría mi archivo en el llamado Ajax, lo guarde en el servidor y luego esa ruta se la asocio al boton. El problema esta en que por requisitos del cliente, bajo ninguna circunstancia se puede almacenar archivos en el servidor.

    Existe alguna forma que en la respuesta ajax envie el archivo, y lo mantenga en el navegador y cuando se haga click en el boton se descargue del mismo navegador?

    Nota: El archivo es un archivo formato .CVS

    martes, 31 de mayo de 2016 17:50

Todas las respuestas

  • normalmente generaría mi archivo en el llamado Ajax, lo guarde en el servidor y luego esa ruta se la asocio al boton. El problema esta en que por requisitos del cliente, bajo ninguna circunstancia se puede almacenar archivos en el servidor.

    No almacenes el archivo en el servidor. En su lugar, haz que el botón de descargarlo apunte a un método de acción en un controlador (y no a un archivo temporal que has generado). Dentro de ese método de acción, genera el contenido del archivo dinámicamente en memoria, bien sea en un StringBuilder, o un array de bytes, o un MemoryStream (dependiendo de cómo lo generes normalmente), y luego devuelve ese contenido como resultado del método de acción. Puedes usar return File(...), que tiene varias sobrecargas adicionales (además de la de devolver un fichero desde el disco) para devolver datos desde la memoria.
    martes, 31 de mayo de 2016 17:56
  • Por que no lo lees todo, cuidado con los caracteres especiales, ya que es un archivo, y lo almacenas en una variable se session hasta que lo descargue, (pero realmente lo que haces, es crear el archivo en la ruta que especifique para tu botón descargar, con su "nombre.extension", con su respectivo contenido).

    Si mi respuesta te resolvió tu problema no olvides marcarla como respuesta, y si te sirvió de ayuda como útil,

    Saludos.


    • Editado j0rgit0 martes, 31 de mayo de 2016 18:17
    martes, 31 de mayo de 2016 18:16
  • hola

    los datos con lo cual generas el archivo lo tienes disponible cuando se presiona el boton o solo los tienes cuando analizas los resultados ?

    lo pregunto para conocer si puedes generar y enviar el archivo trabajandolo en memoria

    los datos para generar el csv los puedes recuperar de alguna db cuando se presiona exportar ?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 31 de mayo de 2016 18:50