Asp.net把图片存入数据库和读取图片的方法

首先,我们需要了解一下在Asp.net中,将图片存入数据库的方法。

将图片存入数据库

在Asp.net中,可以使用二进制对图片进行编码,然后将编码后的二进制数据存入数据库。具体步骤如下:

1.创建数据库表

首先我们需要创建一个用于存储图片的表,例如:PictureTable。表中需要包含两个列:图片名称(PictureName)和图片内容(PictureContent)。

可以使用以下SQL语句创建该表:

CREATE TABLE PictureTable(
  PictureName NVARCHAR(50),
  PictureContent VARBINARY(MAX)
)

2.编写上传图片的代码

在Asp.net中,可以使用FileUpload控件实现上传图片的功能。通过FileUpload控件上传图片后,可以从FileUpload控件中获取图片的二进制数据,然后将该二进制数据存入数据库。

可以使用以下代码实现上传图片的功能:

protected void UploadButton_Click(object sender, EventArgs e)
{
    // 如果有文件被上传
    if (PictureFileUpload.HasFile)
    {
        // 获取文件名
        string filename = PictureFileUpload.PostedFile.FileName;

        // 获取文件的二进制数据
        byte[] filedata = PictureFileUpload.FileBytes;

        // 插入数据到数据库中
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand("INSERT INTO PictureTable(PictureName, PictureContent) VALUES(@PictureName, @PictureContent)", connection);
            command.Parameters.AddWithValue("@PictureName", filename);
            command.Parameters.AddWithValue("@PictureContent", filedata);
            connection.Open();
            int result = command.ExecuteNonQuery();
        }
    }
}

3.读取图片

在Asp.net中,可以使用Image控件显示图片。可以从数据库中获取图片的二进制数据,然后将该二进制数据转换为图片,最后将图片显示在Image控件中。

可以使用以下代码实现读取图片的功能:

protected void ShowImageButton_Click(object sender, EventArgs e)
{
    // 查询数据库中的数据
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand("SELECT PictureContent FROM PictureTable WHERE PictureName=@PictureName", connection);
        command.Parameters.AddWithValue("@PictureName", PictureNameTextBox.Text);
        connection.Open();
        SqlDataReader reader = command.ExecuteReader();

        // 如果查询结果非空
        if (reader.Read())
        {
            // 获取图片数据
            byte[] filedata = (byte[])reader["PictureContent"];

            // 将图片数据转换为图片
            System.IO.MemoryStream ms = new System.IO.MemoryStream(filedata);
            System.Drawing.Image img = System.Drawing.Image.FromStream(ms);

            // 显示图片
            PictureImage.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(filedata);
        }
        else
        {
            // 如果查询结果为空,则清空Image控件
            PictureImage.ImageUrl = "";
        }
    }
}

示例

下面我们将给出两个关于存取图片的例子:

示例1: 保存图片

下面是一个使用Asp.net将图片保存到数据库中的例子。在这个例子中,文件上传控件用于选择要上传的图片,上传按钮用于将图片上传到数据库中。

<asp:FileUpload ID="PictureFileUpload" runat="server" />
<asp:Button ID="UploadButton" runat="server" Text="上传" OnClick="UploadButton_Click" />
protected void UploadButton_Click(object sender, EventArgs e)
{
    if (PictureFileUpload.HasFile)
    {
        // 获取文件名
        string filename = PictureFileUpload.PostedFile.FileName;

        // 获取文件的二进制数据
        byte[] filedata = PictureFileUpload.FileBytes;

        // 插入数据到数据库中
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand("INSERT INTO PictureTable(PictureName, PictureContent) VALUES(@PictureName, @PictureContent)", connection);
            command.Parameters.AddWithValue("@PictureName", filename);
            command.Parameters.AddWithValue("@PictureContent", filedata);
            connection.Open();
            int result = command.ExecuteNonQuery();
        }
    }
}

示例2: 显示图片

下面是一个使用Asp.net从数据库中读取图片并显示的例子。在这个例子中,用户需要输入图片的名称,系统会从数据库中查找该名称对应的图片,并将该图片显示在Image控件中。

<asp:TextBox ID="PictureNameTextBox" runat="server"></asp:TextBox>
<asp:Button ID="ShowImageButton" runat="server" Text="显示图片" OnClick="ShowImageButton_Click" />

<asp:Image ID="PictureImage" runat="server" />
protected void ShowImageButton_Click(object sender, EventArgs e)
{
    // 查询数据库中的数据
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand("SELECT PictureContent FROM PictureTable WHERE PictureName=@PictureName", connection);
        command.Parameters.AddWithValue("@PictureName", PictureNameTextBox.Text);
        connection.Open();
        SqlDataReader reader = command.ExecuteReader();

        // 如果查询结果非空
        if (reader.Read())
        {
            // 获取图片数据
            byte[] filedata = (byte[])reader["PictureContent"];

            // 将图片数据转换为图片
            System.IO.MemoryStream ms = new System.IO.MemoryStream(filedata);
            System.Drawing.Image img = System.Drawing.Image.FromStream(ms);

            // 显示图片
            PictureImage.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(filedata);
        }
        else
        {
            // 如果查询结果为空,则清空Image控件
            PictureImage.ImageUrl = "";
        }
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Asp.net把图片存入数据库和读取图片的方法 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • c#操作sql server2008 的界面实例代码

    下面我将为你详细讲解“C#操作SQL Server 2008的界面实例代码”的完整攻略。 界面设计 首先需要设计一个界面,使用Visual Studio编写WinForm应用程序,并添加相应的控件。 界面示例代码: <form> <button name="btnInsert" text="插入" /…

    C# 2023年5月31日
    00
  • 浅析C#中的AsnycLocal与ThreadLocal

    浅析C#中的AsyncLocal与ThreadLocal 在C#中,当多个线程同时访问同一个变量时,需要使用线程安全的方式保护变量,避免数据竞争。AsyncLocal和ThreadLocal就是两种常用的线程安全技术。 引言 AsyncLocal AsyncLocal是.NET Framework 4.6中引入的一种用于在异步代码中存储和检索数据的新机制。它…

    C# 2023年5月15日
    00
  • System.Runtime.InteropServices.COMException的解决方法

    下面是详细讲解 System.Runtime.InteropServices.COMException 异常的解决方法的完整攻略: 什么是 System.Runtime.InteropServices.COMException 异常 System.Runtime.InteropServices.COMException 是 .NET 框架中的一种特殊的异常类…

    C# 2023年6月6日
    00
  • C#实现飞行棋游戏

    C#实现飞行棋游戏攻略 1. 游戏规则概述 飞行棋是一种常见的棋类游戏,又称“飞行棋”,据传说源于古印度的游戏,起源于印度古董陀罗尼。其游戏规则如下: 1.1 游戏棋盘 游戏棋盘为正方形,格数为12×12。每个玩家有4个飞机,分为红、黄、蓝、绿四色。 1.2 开始游戏 游戏开始时,每个玩家的4架飞机都在停机坪上。每次掷骰子,6点时,可以先从停机坪起飞一架飞机…

    C# 2023年6月6日
    00
  • MASAMinimalAPI:创建MinimalAPI项目

    项目准备 1.创建项目,选择webapi。取消勾选使用控制器。创建minimal Api项目 2.创建成功后MinimalAPI的接口直接写在program.cs中 3.引入nuget包:Masa.Contrib.Service.MinimalAPIs MinimalAPI改造 1. 在program.cs中加入以下内容 将原有的 var app = bui…

    C# 2023年5月5日
    00
  • 如何搭建新的WPF项目框架

    如何搭建新的WPF项目框架 搭建新的WPF项目框架可以帮助我们更好地组织和管理WPF应用程序的代码。本文将提供详细的“如何搭建新的WPF项目框架”的完整攻略,包括如何创建项目结构、如何添加基础类以及两个示例。 创建项目结构 要创建新的WPF项目框架,我们需要执行以下步骤: 创建一个新的WPF应用程序项目。 在项目中创建一个名为“Infrastructure”…

    C# 2023年5月15日
    00
  • C#将制定目录文件名转换成大写的方法

    要将指定目录下的所有文件名转换为大写,可以使用以下步骤: 获取指定目录下的所有文件名 可以使用 System.IO.Directory 下的 GetFiles 方法获取指定目录下的所有文件名,该方法返回一个 string 数组,每个元素都是文件的完整路径和名称。 string[] filePaths = Directory.GetFiles(@"C…

    C# 2023年6月1日
    00
  • vista和win7在windows服务中交互桌面权限问题解决方法:穿透Session 0 隔离

    在Windows操作系统中,服务是一种常见的后台程序,它可以在系统启动时自动运行,并在后台执行某些任务。在本攻略中,我们将详细介绍如何在Windows服务中解决桌面权限问题,并提供两个示例来说明其用法。 以下是两个示例,介绍如何在Windows服务中解决桌面权限问题: 示例一:使用Win32 API穿透Session0隔离 首先,我们需要使用Win32 AP…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部