首页 > 解决方案 > 无法将文件上传到数据表并在gridview上显示(上传文件时没有任何反应)

问题描述

我想添加上传到数据表的文件,然后在gridview上显示。当我上传文件时,没有任何反应,gridview也没有更新。我有将文件上传到sql数据库的代码,但现在我只想将文件上传到datatable 并将其显示在 gridview 上,然后最终用户可以决定是否将文件插入 sql server 数据库。我不确定为什么我无法上传文件,我还尝试显示我试图在标签上插入数据的变量,但也没有任何反应。如果有人可以帮助我,那就太好了。

前端代码

<form id="form1" runat="server">
        <div>
            <asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="Upload" />
<hr />
<asp:GridView ID="GridView1" runat="server" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White"
    RowStyle-BackColor="#A1DCF2" ShowHeaderWhenEmpty="True" AlternatingRowStyle-BackColor="White" AlternatingRowStyle-ForeColor="#000"
    AutoGenerateColumns="false" Height="338px" Width="449px">
    <Columns>
        <asp:BoundField DataField="filename" HeaderText="File Name"/>
        
    </Columns>
</asp:GridView>
            
        </div>
    </form>

后端

Private dt As DataTable

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            'BindGrid()

            fill()
            Session("table") = dt
        Else
            ' this is a page post back - re-load the active table into our
            ' forms level dt. 
            dt = Session("table")
            
        End If
    End Sub

 Protected Sub fill()
        dt = New DataTable()
        Dim dc As DataColumn = New DataColumn("file")
        dc.DataType = System.Type.[GetType]("System.Byte[]")
        dt.Columns.Add(dc)
        dt.Columns.Add("filename", GetType(String))
        dt.Columns.Add("filetype", GetType(String))
    End Sub

Protected Sub Upload(sender As Object, e As EventArgs) Handles btnUpload.Click
        Dim filename As String = Path.GetFileName(FileUpload1.PostedFile.FileName)
        Dim contentType As String = FileUpload1.PostedFile.ContentType
        Dim fs As Stream = FileUpload1.PostedFile.InputStream
        Dim br As New BinaryReader(fs)
        Dim bytes As Byte() = br.ReadBytes(DirectCast(fs.Length, Long))
        Dim R As DataRow = dt.NewRow()
        R("file") = bytes
        R("filename") = filename
        R("filetype") = contentType
        dt.Rows.Add(R)
        GridView1.DataSource = dt
        GridView1.DataBind()
        Response.Redirect(Request.Url.AbsoluteUri)
        Label1.Text = contentType

    End Sub

标签: vb.netgridviewbyte

解决方案


推荐阅读