[ Foro de C# ]

Visualizar en un label o textbox un archivo word almacenado en base de datos sql server con C#

21-May-2015 03:28
Invitado (Aru)
3 Respuestas

Hola!! estoy tratando de visualizar el contenido de un archivo binario(es un archivo word ) esta almacenado en una base de datos de SQL SERVER y estoy haciendolo con visual C# , quiero visualizarlo en un textbox,label o utilizando un pop up de javascript pero con javascript no lo logro visualizarlo en la ventana emergente,solo se descaraga el archivo en la carpeta Data no tengo mucha experiencia con C# pero el intento le hago. necesito que al momento de presionar el boton me muestre el archivo que esta en la base de datos.
la columna donde se almacena el archivo es de tipo IMAGEN y tiene por nombre DATA y la tabla tiene el nombre de Filess

 
public void Button2_Click(object sender, EventArgs e)
        {
 
 
                    SqlConnection connection = new SqlConnection("Data Source=USUARIO-        PC\\SQLEXPRESS;Initial Catalog=bd_wikisite1;Integrated Security=True");
 
                    connection.Open();
                    SqlCommand cmd = new SqlCommand("SELECT * FROM Filess WHERE ID=@ID ", connection);
 
                    cmd.CommandType = CommandType.Text;
                    SqlDataAdapter sda = new SqlDataAdapter(cmd);
                    // Añadiendo el parámetro
                    cmd.Parameters.Add("@ID", SqlDbType.Int);
                    //estableciendo el valor del parametro
                    cmd.Parameters["@ID"].Value = Int32.Parse(TextBox1.Text);
 
                    DataSet ds = new DataSet();
                    sda.Fill(ds,"Filess");
 
                    //comprobar si hay registros en tabla
                    if (ds.Tables["filess"].Rows.Count != 0)
                    {
                        // El campo data primero se almacena en un buffer
                        byte[] bi = ((byte[])(ds.Tables["filess"].Rows[0]["Data"]));
                        string stFile = "temp" + GenerarNombreFichero() + ".docx";
                        //se crea un filestream
                        FileStream fs = new FileStream(Server.MapPath(".") + @"\Data\" + stFile, FileMode.Create);
 
                        TextBox2.Text=System.IO.File.ReadAllBytes(@"C:\Users\Usuario\Desktop\la chidota\wikisite\wikisite\Data\temp20150520043218.63211917.docx");
 
 
                        fs.Write(bi, 0, Convert.ToInt32(bi.Length));
 
                        string script = "<script languaje='javascript'> ";
                        script += "mostrarFichero('Data/" + stFile + "') ";
                        script += "</script>" + Environment.NewLine;
                        Page.ClientScript.RegisterStartupScript(typeof(string), "mostrarFichero", script);
 
                    }
                    else
                    {
                        Response.Write("<script language=javascript>alert('No exite el archivo');</script>");
                    }
                    connection.Close();     
        }
 


PD: Ojala y me puedan ayudar,por favor es urgente.De ante mano les agradezco.


21-May-2015 10:04
Nacho Cabanes (+31)

No entiendo... ¿a qué te refieres con "mostrar"? Por una parte, no podrás hacer que se vea en medio de una página web, correctamente formateado, un documento en formato de Word. Como mucho, puedes hacer un enlace para que se descargue.

Por otra parte, la ruta que estás indicando es específica de tu equipo, y cuando lo subas a un servidor web o a cualquier otro equipo, el fichero no se encontrará en esa ruta.


21-May-2015 20:20
Elvira Valenzuela

Gracias nacho, entonces, no hay otra forma de se pueda mostrar el contenido del archivo binario(archivo word)  trayendo lo desde la base de datos en una pagina? o minimo el contenido de ese archivo en algún label o TextBox.?


25-May-2015 13:47
Nacho Cabanes (+31)

No. Un fichero binario debe ser analizado por una aplicación que conozca su formato interno. Si tú no puedes ver un documento de Word si no usas el propio Word, o LibreOffice o WordViewer... menos va a poder tu programa, a no ser que domines el formato interno de la versión de documentos de Word que te interese.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)