none
no guarda archivo en ruta el response.writeFile RRS feed

  • Pregunta

  • hola

    necesito guardar un archivo en una carpeta temporal de mi aplicacion web MVC

    pero el response.writeFile no esta guardando el archivo.... el codigo de mi controller es este

       fileBytes = System.IO.File.ReadAllBytes(@"\\filesvr\Etiquetas_dllo\Pendientes\" + nombrePDF);
        var Archivo = File(fileBytes, "application/pdf");
        HttpContext.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", nombrePDF));
        HttpContext.Response.Clear();
        HttpContext.Response.WriteFile(Server.MapPath("~/ArcPDF/"+nombrePDF));
        HttpContext.Response.End();

    me saca una excepcion

    Could not find file en la ruta especifica...

    jueves, 19 de enero de 2017 21:40

Respuestas

  • No, el Response.WriteFile no guarda el archivo. Lo que hace es LEER el archivo y enviar los bytes al navegador. Después el navegador hace con ellos lo que quiera, típicamente preguntarle al usuario si quiere guardarlos, y es el usuario el que tiene que elegir la ubicación para guardarlo (que en general no tendrá nada que ver con la ubicación que tenía el archivo que se leyó en el servidor al llamar a WriteFile).

    En otras palabras: WriteFile=Escribir sobre el canal de comunicaciones un archivo que se lee desde disco.

    • Marcado como respuesta greg_dorian viernes, 20 de enero de 2017 15:55
    viernes, 20 de enero de 2017 8:03
  • hola

    pero deberias enviar el archivo como un FileResult en la respuesta del action

    Descarga de archivos con ASP.NET MVC

    analiza los ejemplos del articulo como envia el archivo

    ---

    Ademas recuerda que por defecto el sitio web solo tiene acceso a las carptas del propio sitio, si sales a otra distinta o a una de red debes darles permisos de acceso, podrias hacer por medio de impersonate

    intenta accediendo a un archivo dentro del sitio para validar el funcionamiento del codigo, porque el problema es de acceso

    saludos

    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    viernes, 20 de enero de 2017 14:06

Todas las respuestas

  • No, el Response.WriteFile no guarda el archivo. Lo que hace es LEER el archivo y enviar los bytes al navegador. Después el navegador hace con ellos lo que quiera, típicamente preguntarle al usuario si quiere guardarlos, y es el usuario el que tiene que elegir la ubicación para guardarlo (que en general no tendrá nada que ver con la ubicación que tenía el archivo que se leyó en el servidor al llamar a WriteFile).

    En otras palabras: WriteFile=Escribir sobre el canal de comunicaciones un archivo que se lee desde disco.

    • Marcado como respuesta greg_dorian viernes, 20 de enero de 2017 15:55
    viernes, 20 de enero de 2017 8:03
  • hola

    pero deberias enviar el archivo como un FileResult en la respuesta del action

    Descarga de archivos con ASP.NET MVC

    analiza los ejemplos del articulo como envia el archivo

    ---

    Ademas recuerda que por defecto el sitio web solo tiene acceso a las carptas del propio sitio, si sales a otra distinta o a una de red debes darles permisos de acceso, podrias hacer por medio de impersonate

    intenta accediendo a un archivo dentro del sitio para validar el funcionamiento del codigo, porque el problema es de acceso

    saludos

    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    viernes, 20 de enero de 2017 14:06