none
Como abrir un archivo pdf desde el servidor?(c#) RRS feed

  • 问题

  • Buen dia,estoy desarrollando en asp.net en c#.

    Inicialmente tengo un archivo pdf en una ruta ftp,en mis pruebas locales ,guardo el archivo del ftp a mi pc(carpeta local)y solo realizo el      Process.Start(pathPDF); y abre el pdf,todo bien,el problema es al publicarlo.

    Cuando publico creo una carpeta temporal en la ruta donde esta publicado,entonces me guarda ahi el archivo pero no lo abre,ya que en mi pc pruebo ,veo que crea el arcvhivo pero esta en la ruta dels ervidor y no puedo abrirla.

    COmo podria hacer??

    Este es mi codigo:

     
    String downloads = ClaroAppSettings.RutaTemporal;
                const string document = "Documento.pdf";
                FtpWebRequest request = (FtpWebRequest)System.Net.WebRequest.Create(hrutaftp.Value);
                request.Credentials = credentials;
                request.Credentials = new NetworkCredential("USRREEVADI", "Password123");
                request.Method = WebRequestMethods.Ftp.DownloadFile;
    
                using (MemoryStream stream = new MemoryStream())
                {
                    ((FtpWebResponse)request.GetResponse()).GetResponseStream().CopyTo(stream);
                    System.IO.File.WriteAllBytes(downloads + document, stream.ToArray());
                }
    
                String RutaArchivo = downloads + document;
                  String pathPDF = RutaArchivo;
    
                Process.Start(pathPDF);

    gracias


    Desarrolladora

    2014年3月22日 18:56

答案

  • hola

    estas en un ambiente web si usas el Process.Start() va a abrir el pdf en el servidor no en el cliente

    deberias enviar en el Response el pdf para que el usuario lo descargue

    algo como ser

    Response.Clear();
    Response.ContentType = "application/pdf";
    
    Response.AddHeader("content-disposition", string.Format("attachment;filename={0}", filename));
    
    Response.BinaryWrite(contenidoarchivo);
    
    Response.End();

     problema al abrir un pdf

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    2014年3月22日 19:14
  • *filename,te refieres al nombre del archivo?por ejemplo,documento.pdf??

    exacto

    *contenidoarchivo, a que te refieres la ruta? d:\data\documento.pdf

    en realidad seria el byte[] del documento

    si quieres pasar una ruta usarias

    Response.WriteFile()

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    2014年3月22日 21:42

全部回复

  • hola

    estas en un ambiente web si usas el Process.Start() va a abrir el pdf en el servidor no en el cliente

    deberias enviar en el Response el pdf para que el usuario lo descargue

    algo como ser

    Response.Clear();
    Response.ContentType = "application/pdf";
    
    Response.AddHeader("content-disposition", string.Format("attachment;filename={0}", filename));
    
    Response.BinaryWrite(contenidoarchivo);
    
    Response.End();

     problema al abrir un pdf

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    2014年3月22日 19:14
  • hola

    estas en un ambiente web si usas el Process.Start() va a abrir el pdf en el servidor no en el cliente

    deberias enviar en el Response el pdf para que el usuario lo descargue

    algo como ser

    Response.Clear();
    Response.ContentType = "application/pdf";
    
    Response.AddHeader("content-disposition", string.Format("attachment;filename={0}", filename));
    
    Response.BinaryWrite(contenidoarchivo);
    
    Response.End();

     problema al abrir un pdf

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Hola ,gracias por responderme

    una consulta:

    *filename,te refieres al nombre del archivo?por ejemplo,documento.pdf??

    Response.BinaryWrite(contenidoarchivo);

    *contenidoarchivo, a que te refieres la ruta? d:\data\documento.pdf

    ah eso??

    me comentas,gracias.



    Desarrolladora

    2014年3月22日 20:32
  • *filename,te refieres al nombre del archivo?por ejemplo,documento.pdf??

    exacto

    *contenidoarchivo, a que te refieres la ruta? d:\data\documento.pdf

    en realidad seria el byte[] del documento

    si quieres pasar una ruta usarias

    Response.WriteFile()

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    2014年3月22日 21:42
  • hola,tendras algun ejemplo?hasta ahora no puedo abrirlo.

    porque use Response.WriteFile(Server.MapPath(rutatemporal));

    pero no abrio el pdf :/

    y es una ruta del servidor.


    Desarrolladora

    2014年3月24日 21:26
  • Hola Rosita,

    Es un gusto tenerte por acá, te comparto este link el cual expone un ejemplo espero te sirva, por el momento marcaremos la respuesta de Leandro como respuesta a tu consulta, si tienes algún inconveniente te pido por favor desmarques la respuesta y déjanoslo saber, es solo para tener un mayor control del foro.

     

    Saludos,

    Miguel

    MSDN/TechNet Soporte Comunidades

    Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema.
    Es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    2014年3月27日 21:42
    版主
  • Hola Buen dia, tengo el mismo problema pero mi pdf esta fuera del proyecto, osea esta en una carpeta compartida, como le tendria que hacer? mi codigo esta asi:

                Response.Clear();
                Response.ContentType = "application/pdf";
                Response.AddHeader("content-disposition", string.Format("attachment;filename={0}", "Kit de juntas.pdf"));
                Response.WriteFile("\\192.168.0.137\\KioscoGEA\\");

                Response.End();

    Todo esta dentro de un boton al momento de picarle tendria que abrir el pdf en cada cliente que le pique.

    2022年6月15日 0:20
  • Pudiste solucionarlo?
    2022年6月15日 0:24