none
Abrir archivo PDF almacenado en una tabla de SQL server

    Question

  • Saludos , estoy tratando de abrir un archivo en formato pdf almacenados en una tabla , osea cuando haga click en mi datagrid , en esa fila , se abra el archivo en otra pagina con el response.redirect()

    he notado que hay un campo que contiene una cadena larga de binarios del archivo.

    espero la ayuda plz.


    Indet

    Monday, July 16, 2012 9:27 PM

Answers

  • Leandro estuve verificando el codigo que me envias, pero observo que los archivos existen fisicamente en un directorio.

    En mi caso estan dentro de la base de datos y lo que necesito es abrirlo desde la tabla , osea los archivos no estan en ningun directorio (en mi caso).

    y es abrir el documento al hacer click en la grilla.

    no se si estoy equivocado.

    esta es la estructura de la tabla que contiene los archivos adjuntos:

    sdaadjNombre          sdaadjDoc

    Ced_1.pdf                 0x2554466f19778881da9888  etc.. etc.     (sigue la cadena binaria)

    Ced_2.pdf                 0x2554466f19778881da9888  etc. etc..

    Mas o menos esto estoy intentando, pero cuando haga click en la grilla , pueda abrir el documento, de acuerdo a la tabla que especifico mas arriba.

     public  void  ConsultarDoc()
        {
            //string idprest = IdPrestamo_tbx.Text;
            SqlConnection con = new SqlConnection();
            con.ConnectionString = "ConnectionString";

            SqlCommand com = new SqlCommand("Select top 1 sdaadj_nombre From xsdaadjm where sdaadj_nombre=@sdaadj_nombre");
            com.Connection = con;
            com.Parameters.AddWithValue("sdaadj_nombre", Request.QueryString["sdaadj_nombre"]);

            con.Open();

            SqlDataReader reader = com.ExecuteReader();

            if (reader.Read())
            {
                Response.Clear();
                Response.AddHeader("Content-Type", "application/pdf");
                Response.AddHeader("Content-Disposition", "inline; filename=" + Request.QueryString["sdaadj_nombre"] + ".pdf");
            }

    Indet


    Hola, Tengo el mismo problema tuyo. Hay un archivo en formato .PDF almacenado en la base de datos de SQL Server, la pregunta es como puedo visualizar ese archivo, pero sin guardarlo fisicamente, porque no tiene sentido almacenarlo en la base de datos para protegerlo y al momento de mostrarlo tener que publicarlo almacenandolo fisicamente, la idea es simplemente visualizarlo, pero que el usuario no tengo la opcion de tener acceso directo al archivo.

    si logras resolver algo por favor me informas: diagramas@hotmail.com


    Thursday, August 16, 2012 10:54 PM

All replies

  • http://www.codeproject.com/Articles/308552/Upload-and-Download-Files-to-SQL-Servers-in-ASP-Ne

    probá poner ContentType = "application/octet-stream" y te va a permitir abrir el archivo con el programa predeterminado.

    Monday, July 16, 2012 11:33 PM
  • hola

    [ASP.NET] Grabar Archivo en base de datos

    si esta en uan base de datos puedes usar una pagina o un handler, para implementar la accion

    pero eso del redirect no funciona

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Monday, July 16, 2012 11:51 PM
  • Leandro estuve verificando el codigo que me envias, pero observo que los archivos existen fisicamente en un directorio.

    En mi caso estan dentro de la base de datos y lo que necesito es abrirlo desde la tabla , osea los archivos no estan en ningun directorio (en mi caso).

    y es abrir el documento al hacer click en la grilla.

    no se si estoy equivocado.

    esta es la estructura de la tabla que contiene los archivos adjuntos:

    sdaadjNombre          sdaadjDoc

    Ced_1.pdf                 0x2554466f19778881da9888  etc.. etc.     (sigue la cadena binaria)

    Ced_2.pdf                 0x2554466f19778881da9888  etc. etc..

    Mas o menos esto estoy intentando, pero cuando haga click en la grilla , pueda abrir el documento, de acuerdo a la tabla que especifico mas arriba.

     public  void  ConsultarDoc()
        {
            //string idprest = IdPrestamo_tbx.Text;
            SqlConnection con = new SqlConnection();
            con.ConnectionString = "ConnectionString";

            SqlCommand com = new SqlCommand("Select top 1 sdaadj_nombre From xsdaadjm where sdaadj_nombre=@sdaadj_nombre");
            com.Connection = con;
            com.Parameters.AddWithValue("sdaadj_nombre", Request.QueryString["sdaadj_nombre"]);

            con.Open();

            SqlDataReader reader = com.ExecuteReader();

            if (reader.Read())
            {
                Response.Clear();
                Response.AddHeader("Content-Type", "application/pdf");
                Response.AddHeader("Content-Disposition", "inline; filename=" + Request.QueryString["sdaadj_nombre"] + ".pdf");
            }


    Indet


    Wednesday, July 18, 2012 1:52 PM
  • ok ya he logrado esto , pero solamente lo descarga y lo que quiero es abrirlo en otra pagina o ventana , o puede ser desde que le de cliec a la grilla invoque el adobe reader. bueno aqui el codigo logrado:

     string nom = Request.QueryString["sdaadj_nombre"];

                // Get the file from the database
                //DataTable file = GetAFile(ID, idprest);

                DataTable file = GetAFile(nom, idprest);
               
                DataRow row = file.Rows[0];

                string name = (string)row["sdaadj_nombre"];
                string contentType = (string)row["sdaadj_nombre"];
                Byte[] data = (Byte[])row["sdaadj_doc"];

                //// Send the file to the browser
                Response.AddHeader("Content-type", contentType);
                Response.AddHeader("sdaadj_nombre", contentType);
                Response.AddHeader("Content-Disposition", "attachment; filename=" + name);
                Response.BinaryWrite(data);

    de esa manera solo descarga el archivo en mi directorio de download, quiero abrilo. ??


    Indet

    Thursday, July 19, 2012 12:51 AM
  • Hola ING. Erickson Figueroa

    Ese mismo codigo te sirve para verlo inline, lo debes abrir en una ventana nueva y cambiar esta parte de attachment por inline

    Response.AddHeader("Content-Disposition", "inline; filename=" + name);

    Pero no se como funcionaria en la mayoria de los exploradores actuales, o mejor dicho como funcionaria en IE7 o anterior. Pruebalo

    Como mencionas tambien el cliente abre el AdobeReader
    Pero tambien se que hay formas de visualizarlo sin necesidad de que el cliente tenga instalado Adobe Reader, te paso los enlaces que te pueden ayudar

    Espero que te sirva de ayuda o guia.


    Jose. A Fernandez | blog: http://geeks.ms/blogs/fernandezja

    Thursday, July 19, 2012 5:35 PM
  • Saludos , estoy tratando de abrir un archivo en formato pdf almacenados en una tabla , osea cuando haga click en mi datagrid , en esa fila , se abra el archivo en otra pagina con el response.redirect()

    he notado que hay un campo que contiene una cadena larga de binarios del archivo.

    espero la ayuda plz.


    Indet

    Hola, Tengo el mismo problema tuyo. Hay un archivo en formato .PDF almacenado en la base de datos de SQL Server, la pregunta es como puedo visualizar ese archivo, pero sin guardarlo fisicamente, porque no tiene sentido almacenarlo en la base de datos para protegerlo y al momento de mostrarlo tener que publicarlo almacenandolo fisicamente, la idea es simplemente visualizarlo, pero que el usuario no tengo la opcion de tener acceso directo al archivo.

    si logras resolver algo por favor me informas: diagramas@hotmail.com

    Thursday, August 16, 2012 10:54 PM
  • Leandro estuve verificando el codigo que me envias, pero observo que los archivos existen fisicamente en un directorio.

    En mi caso estan dentro de la base de datos y lo que necesito es abrirlo desde la tabla , osea los archivos no estan en ningun directorio (en mi caso).

    y es abrir el documento al hacer click en la grilla.

    no se si estoy equivocado.

    esta es la estructura de la tabla que contiene los archivos adjuntos:

    sdaadjNombre          sdaadjDoc

    Ced_1.pdf                 0x2554466f19778881da9888  etc.. etc.     (sigue la cadena binaria)

    Ced_2.pdf                 0x2554466f19778881da9888  etc. etc..

    Mas o menos esto estoy intentando, pero cuando haga click en la grilla , pueda abrir el documento, de acuerdo a la tabla que especifico mas arriba.

     public  void  ConsultarDoc()
        {
            //string idprest = IdPrestamo_tbx.Text;
            SqlConnection con = new SqlConnection();
            con.ConnectionString = "ConnectionString";

            SqlCommand com = new SqlCommand("Select top 1 sdaadj_nombre From xsdaadjm where sdaadj_nombre=@sdaadj_nombre");
            com.Connection = con;
            com.Parameters.AddWithValue("sdaadj_nombre", Request.QueryString["sdaadj_nombre"]);

            con.Open();

            SqlDataReader reader = com.ExecuteReader();

            if (reader.Read())
            {
                Response.Clear();
                Response.AddHeader("Content-Type", "application/pdf");
                Response.AddHeader("Content-Disposition", "inline; filename=" + Request.QueryString["sdaadj_nombre"] + ".pdf");
            }

    Indet


    Hola, Tengo el mismo problema tuyo. Hay un archivo en formato .PDF almacenado en la base de datos de SQL Server, la pregunta es como puedo visualizar ese archivo, pero sin guardarlo fisicamente, porque no tiene sentido almacenarlo en la base de datos para protegerlo y al momento de mostrarlo tener que publicarlo almacenandolo fisicamente, la idea es simplemente visualizarlo, pero que el usuario no tengo la opcion de tener acceso directo al archivo.

    si logras resolver algo por favor me informas: diagramas@hotmail.com


    Thursday, August 16, 2012 10:54 PM