将所选图像从gridview插入到mysql表中

时间:2015-09-22 06:13:36

标签: c# mysql ado.net

我使用asp.net,c#和mysql。 那么如何将所选图像从gridview插入到mysql表中呢?请给我看一些例子。

1 个答案:

答案 0 :(得分:0)

插入的图像将显示在GridView控件中。

GridView分配了一个OnRowDataBound事件处理程序,用于显示插入MySql数据库中的Image。

HTML

<asp:FileUpload ID="FileUpload1"
                runat="server" />
<asp:Button Text="Upload"
            runat="server"
            OnClick="UploadFile" />
<asp:GridView ID="gvImages"
              runat="server"
              AutoGenerateColumns="false"
              OnRowDataBound="OnRowDataBound">
    <Columns>
        <asp:BoundField HeaderText="File Id"
                        DataField="FileId" />
        <asp:BoundField HeaderText="File Name"
                        DataField="FileName" />
        <asp:TemplateField HeaderText="Image">
            <ItemTemplate>
                <asp:Image ID="Image1"
                           runat="server"
                           Height="80"
                           Width="80" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

C#

protected void UploadFile(object sender, EventArgs e)
{
    string filename = Path.GetFileName(FileUpload1.PostedFile.FileName);
    string contentType = FileUpload1.PostedFile.ContentType;
    using (Stream fs = FileUpload1.PostedFile.InputStream)
    {
        using (BinaryReader br = new BinaryReader(fs))
        {
            byte[] bytes = br.ReadBytes((Int32)fs.Length);
            string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
            using (MySqlConnection con = new MySqlConnection(constr))
            {
                string query = "INSERT INTO Files(FileName, ContentType, Content) VALUES (@FileName, @ContentType, @Content)";
                using (MySqlCommand cmd = new MySqlCommand(query))
                {
                    cmd.Connection = con;
                    cmd.Parameters.AddWithValue("@FileName", filename);
                    cmd.Parameters.AddWithValue("@ContentType", contentType);
                    cmd.Parameters.AddWithValue("@Content", bytes);
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                }
            }
        }
    }
    Response.Redirect(Request.Url.AbsoluteUri);
}

单击上传按钮时会执行Above事件处理程序,它首先使用BinaryReader类将上传的图像文件转换为BYTE数组,然后将图像文件保存为MySql数据库中的二进制数据(BLOB)。

将文件名,内容类型(MIME类型)和实际文件作为字节数组插入到MySql数据库表中。

注意:内容类型(MIME类型)在下载文件时非常重要,因为它会通知浏览器文件的类型。