RE: Opening MS WORD document from database

Discussion in 'ASP .Net' started by Simon, Nov 8, 2005.

  1. Simon

    Simon Guest

    Hmm, so I was somewhat unsure how to "delete everything except for the
    page directive." I believe the page directive is the topmost line that
    starts
    with <%@ Page Language="vb"..... etc, etc. Is that right? I made a new,
    empty webform that has nothing but the page directive in the .aspx. I tried
    opening the file with this page using the following code in the code-behind.
    The downloaded file doesn't contain the source of the webpage anymore, but
    instead, a line of squares. Any file i try to download gives me the same
    result =( Does anyone have sample code for downloading MS Word documents
    from the database? Thanks.

    ---[begin vb.net code]----

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
    System.EventArgs) Handles MyBase.Load

    Dim db As New MD_Runs.Database(strDBConn)
    Dim dt As DataTable
    file_id = CInt(Request.QueryString("file_id"))
    Dim sqlParams() As SqlParameter = {New SqlParameter("@file_id",
    file_id)}

    dt = db.FillDataTable("usp_files_s_one", sqlParams)

    Dim fileData() As Byte = CType(dt.Rows(0)("fileData"), Byte())

    Response.Clear()
    Response.ClearHeaders()
    Response.ClearContent()

    Response.ContentType = "Application/msword"
    Response.OutputStream.Write(fileData, 0, fileData.Length)
    Response.OutputStream.Flush()
    Response.OutputStream.Close()

    End Sub
    End Class

    ---[end code]---


    "Daniel Walzenbach" <> wrote in message
    news:...
    > Simon,
    >
    > make sure to delete everything except the page directive from your .aspx
    > page. That should do the trick!
    >
    > Regards
    >
    > Daniel
    >
    >
    > "Simon" <> schrieb im Newsbeitrag
    > news:%...
    >>I tried putting it into a response.outputstream, but still not getting the
    >>actual file. Now, it displays the source of the web page instead. What
    >>am I doing wrong?
    >>
    >> ----[VB.net code]-----
    >> Dim db As New MD_Runs.Database(strDBConn)
    >> Dim dt As DataTable
    >> Dim sqlParams() As SqlParameter = { _
    >> New SqlParameter("@rid", rid)}
    >>
    >> dt = db.FillDataTable("usp_files_s_one", sqlParams)
    >>
    >> Dim fileData() As Byte = CType(dt.Rows(0)("FileData"), Byte())
    >>
    >> Response.Clear()
    >> Response.ClearHeaders()
    >> Response.ClearContent()
    >> Response.ContentType = "Application/msword"
    >> Response.OutputStream.Write(fileData, 0, fileData.Length)
    >> Response.OutputStream.Flush()
    >> Response.OutputStream.Close()
    >> ----------------------
    >>
    >>
    >>> "Jason Chu" <> wrote in message
    >>> news:...
    >>>> I'm a C# programmer...so bare with it.
    >>>> you would need to put that byte[] into the Response.OutputStream.
    >>>> so..
    >>>> Response.OutputStream.Write(byte[],0,the length);
    >>>>
    >>>> along with the Response.ContentType set correctly, the browser will be
    >>>> able
    >>>> to handle it as a word file.
    >>>>
    >>>> Response.OutputStream will essentially turn your aspx file into a doc
    >>>> file...so the wordopener.aspx when you browse it...it'll be treated as
    >>>> a
    >>>> doc
    >>>> file...so nothing in the html tags would matter, as you won't see them.
    >>>>
    >>>> and when you're finished...end with Response.End
    >>>>
    >>>>
    >>>> "Simon" wrote:
    >>>>
    >>>>> I'm simplying trying to download and and open word documents that are
    >>>>> stored
    >>>>> in the database. I figured out how to uploaded the documents as Byte,
    >>>>> but I
    >>>>> can't figure out how to get them back out properly. The following
    >>>>> code
    >>>>> is
    >>>>> what I've tried (vb.NET)... It goes as far as asking me to Save/Open
    >>>>> the
    >>>>> file, but when I do, the contents of the documents is the webage that
    >>>>> the
    >>>>> download link was on! I'm fairly new to programming/web development,
    >>>>> so
    >>>>> i'm
    >>>>> not totally sure what i'm doing. I hope i've included enough
    >>>>> information.
    >>>>>
    >>>>> Thanks in advance!
    >>>>>
    >>>>> Simon
    >>>>>
    >>>>> --- VB.NET code ---
    >>>>>
    >>>>> Public Sub DownloadFile(ByVal File_Id As Integer)
    >>>>> Dim dr As SqlDataReader
    >>>>> Try
    >>>>>
    >>>>> Me.OpenConnection(ConfigurationSettings.AppSettings("MD_Runs_Connection_String"))
    >>>>>
    >>>>> Dim sqlCmd As New SqlCommand("usp_files_s_by_file_id",
    >>>>> sqlConn)
    >>>>> sqlCmd.CommandType = CommandType.StoredProcedure
    >>>>> sqlCmd.Parameters.Add(New SqlParameter("@file_id",
    >>>>> File_Id))
    >>>>>
    >>>>> dr = sqlCmd.ExecuteReader()
    >>>>>
    >>>>> Do While dr.Read
    >>>>> Dim file() As Byte = CType(dr.Item("fileData"),
    >>>>> Byte())
    >>>>> memStream.Write(file, 0, file.Length)
    >>>>> Loop
    >>>>>
    >>>>> memStream.Flush()
    >>>>> ContentType = dr.Item("Application/octet-stream")
    >>>>>
    >>>>> Catch
    >>>>> Throw
    >>>>> Finally
    >>>>> dr.Close()
    >>>>> Me.CloseConnection()
    >>>>> End Try
    >>>>> End Sub
    >>>>>
    >>>>>
    >>>>>
    >>>
    >>>

    >>
    >>

    >
    >
    Simon, Nov 8, 2005
    #1
    1. Advertising

  2. Simon try :-
    Dim strSQL As String
    Dim objDataset As New DataSet
    Dim objAdapter As New System.Data.SqlClient.SqlDataAdapter

    ' Get all the customers from the USA.
    strSQL = "Select * from customers"
    objAdapter.SelectCommand = New
    System.Data.SqlClient.SqlCommand(strSQL, objConn)
    ' Fill the dataset.
    objAdapter.Fill(objDataset)
    ' Create a new view.
    Dim oView As New DataView(objDataset.Tables(0))
    ' Set up the data grid and bind the data.

    Repeater1.DataSource = oView
    Repeater1.DataBind()


    '**Set the MIME type to Excel.
    'Response.ContentType = "application/vnd.ms-excel"

    'Response.ContentType = "application/vnd.ms-word"
    Response.ContentType = "application/msword"

    '**Remove the charset from the Content-Type header.
    Response.Charset = ""

    Dim strw As New System.IO.StringWriter
    Dim htmlw As New System.Web.UI.HtmlTextWriter(strw)

    '**HTML for the literal control.
    '**Read limitations
    'Datalist1.RenderControl(htmlw)
    Repeater1.RenderControl(htmlw)

    '**Write the HTML back to the browser.
    Response.Write(strw.ToString())
    '**End the response.
    Response.End()

    Patrick



    "Simon" <> wrote in message
    news:...
    > Hmm, so I was somewhat unsure how to "delete everything except for the
    > page directive." I believe the page directive is the topmost line that
    > starts
    > with <%@ Page Language="vb"..... etc, etc. Is that right? I made a new,
    > empty webform that has nothing but the page directive in the .aspx. I

    tried
    > opening the file with this page using the following code in the

    code-behind.
    > The downloaded file doesn't contain the source of the webpage anymore, but
    > instead, a line of squares. Any file i try to download gives me the same
    > result =( Does anyone have sample code for downloading MS Word documents
    > from the database? Thanks.
    >
    > ---[begin vb.net code]----
    >
    > Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
    > System.EventArgs) Handles MyBase.Load
    >
    > Dim db As New MD_Runs.Database(strDBConn)
    > Dim dt As DataTable
    > file_id = CInt(Request.QueryString("file_id"))
    > Dim sqlParams() As SqlParameter = {New SqlParameter("@file_id",
    > file_id)}
    >
    > dt = db.FillDataTable("usp_files_s_one", sqlParams)
    >
    > Dim fileData() As Byte = CType(dt.Rows(0)("fileData"), Byte())
    >
    > Response.Clear()
    > Response.ClearHeaders()
    > Response.ClearContent()
    >
    > Response.ContentType = "Application/msword"
    > Response.OutputStream.Write(fileData, 0, fileData.Length)
    > Response.OutputStream.Flush()
    > Response.OutputStream.Close()
    >
    > End Sub
    > End Class
    >
    > ---[end code]---
    >
    >
    > "Daniel Walzenbach" <> wrote in message
    > news:...
    > > Simon,
    > >
    > > make sure to delete everything except the page directive from your .aspx
    > > page. That should do the trick!
    > >
    > > Regards
    > >
    > > Daniel
    > >
    > >
    > > "Simon" <> schrieb im Newsbeitrag
    > > news:%...
    > >>I tried putting it into a response.outputstream, but still not getting

    the
    > >>actual file. Now, it displays the source of the web page instead. What
    > >>am I doing wrong?
    > >>
    > >> ----[VB.net code]-----
    > >> Dim db As New MD_Runs.Database(strDBConn)
    > >> Dim dt As DataTable
    > >> Dim sqlParams() As SqlParameter = { _
    > >> New SqlParameter("@rid", rid)}
    > >>
    > >> dt = db.FillDataTable("usp_files_s_one", sqlParams)
    > >>
    > >> Dim fileData() As Byte = CType(dt.Rows(0)("FileData"), Byte())
    > >>
    > >> Response.Clear()
    > >> Response.ClearHeaders()
    > >> Response.ClearContent()
    > >> Response.ContentType = "Application/msword"
    > >> Response.OutputStream.Write(fileData, 0, fileData.Length)
    > >> Response.OutputStream.Flush()
    > >> Response.OutputStream.Close()
    > >> ----------------------
    > >>
    > >>
    > >>> "Jason Chu" <> wrote in message
    > >>> news:...
    > >>>> I'm a C# programmer...so bare with it.
    > >>>> you would need to put that byte[] into the Response.OutputStream.
    > >>>> so..
    > >>>> Response.OutputStream.Write(byte[],0,the length);
    > >>>>
    > >>>> along with the Response.ContentType set correctly, the browser will

    be
    > >>>> able
    > >>>> to handle it as a word file.
    > >>>>
    > >>>> Response.OutputStream will essentially turn your aspx file into a doc
    > >>>> file...so the wordopener.aspx when you browse it...it'll be treated

    as
    > >>>> a
    > >>>> doc
    > >>>> file...so nothing in the html tags would matter, as you won't see

    them.
    > >>>>
    > >>>> and when you're finished...end with Response.End
    > >>>>
    > >>>>
    > >>>> "Simon" wrote:
    > >>>>
    > >>>>> I'm simplying trying to download and and open word documents that

    are
    > >>>>> stored
    > >>>>> in the database. I figured out how to uploaded the documents as

    Byte,
    > >>>>> but I
    > >>>>> can't figure out how to get them back out properly. The following
    > >>>>> code
    > >>>>> is
    > >>>>> what I've tried (vb.NET)... It goes as far as asking me to

    Save/Open
    > >>>>> the
    > >>>>> file, but when I do, the contents of the documents is the webage

    that
    > >>>>> the
    > >>>>> download link was on! I'm fairly new to programming/web

    development,
    > >>>>> so
    > >>>>> i'm
    > >>>>> not totally sure what i'm doing. I hope i've included enough
    > >>>>> information.
    > >>>>>
    > >>>>> Thanks in advance!
    > >>>>>
    > >>>>> Simon
    > >>>>>
    > >>>>> --- VB.NET code ---
    > >>>>>
    > >>>>> Public Sub DownloadFile(ByVal File_Id As Integer)
    > >>>>> Dim dr As SqlDataReader
    > >>>>> Try
    > >>>>>
    > >>>>>

    Me.OpenConnection(ConfigurationSettings.AppSettings("MD_Runs_Connection_Stri
    ng"))
    > >>>>>
    > >>>>> Dim sqlCmd As New SqlCommand("usp_files_s_by_file_id",
    > >>>>> sqlConn)
    > >>>>> sqlCmd.CommandType = CommandType.StoredProcedure
    > >>>>> sqlCmd.Parameters.Add(New SqlParameter("@file_id",
    > >>>>> File_Id))
    > >>>>>
    > >>>>> dr = sqlCmd.ExecuteReader()
    > >>>>>
    > >>>>> Do While dr.Read
    > >>>>> Dim file() As Byte = CType(dr.Item("fileData"),
    > >>>>> Byte())
    > >>>>> memStream.Write(file, 0, file.Length)
    > >>>>> Loop
    > >>>>>
    > >>>>> memStream.Flush()
    > >>>>> ContentType = dr.Item("Application/octet-stream")
    > >>>>>
    > >>>>> Catch
    > >>>>> Throw
    > >>>>> Finally
    > >>>>> dr.Close()
    > >>>>> Me.CloseConnection()
    > >>>>> End Try
    > >>>>> End Sub
    > >>>>>
    > >>>>>
    > >>>>>
    > >>>
    > >>>
    > >>
    > >>

    > >
    > >

    >
    >
    >
    Patrick.O.Ige, Nov 9, 2005
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Charles A. Lackman

    Opening a Word Document

    Charles A. Lackman, Apr 21, 2005, in forum: ASP .Net
    Replies:
    3
    Views:
    2,168
    =?Utf-8?B?VGFyYXM=?=
    Apr 28, 2005
  2. =?Utf-8?B?U2FpZA==?=
    Replies:
    0
    Views:
    488
    =?Utf-8?B?U2FpZA==?=
    Nov 18, 2003
  3. Stephen Witter

    opening a word doc in word not browser

    Stephen Witter, May 18, 2004, in forum: ASP .Net
    Replies:
    0
    Views:
    471
    Stephen Witter
    May 18, 2004
  4. Simon
    Replies:
    2
    Views:
    733
    Simon
    Oct 28, 2005
  5. Simon
    Replies:
    3
    Views:
    562
    Daniel Walzenbach
    Nov 9, 2005
Loading...

Share This Page