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日

相关文章

  • Could not load type System.ServiceModel.Activation.HttpModule解决办法

    在ASP.NET开发中,有时候会出现“Could not load type ‘System.ServiceModel.Activation.HttpModule’”的错误。这个错误通常是由于IIS未安装WCF组件或未注册ASP.NET的问题导致的。以下是解决这个问题的完整攻略。 环境准备 在解决“Could not load type ‘System.Se…

    C# 2023年5月15日
    00
  • 详细分析c# 运算符重载

    详细分析C#运算符重载 C#运算符重载是一种在类定义中定义特定运算符的方式。通过对运算符进行重载,我们可以为自定义类型定义自定义算术和逻辑行为。本文将介绍如何实现C#运算符重载,并提供两个实际的示例。 1、什么是C#运算符重载 在C#中,一些运算符如 +、-、*、/、< 等都是具有预定义行为的。当我们对 int、float、double、string等…

    C# 2023年6月7日
    00
  • c#中(int)、int.Parse()、int.TryParse、Convert.ToInt32的区别详解

    标题:C#中(int)、int.Parse()、int.TryParse()、Convert.ToInt32()的区别详解 在C#中,我们通常需要将字符串转换为整数类型,而常用的转换方法有四种,分别是: (int); int.Parse(); int.TryParse(); Convert.ToInt32()。 下面将详细介绍这四种转换方法以及它们之间的区别…

    C# 2023年5月15日
    00
  • C# string转换为几种不同编码的Byte[]的问题解读

    题目中的“C# string转换为几种不同编码的Byte[]的问题解读”可以理解为需要将一个C#字符串转换成不同编码方式的字节数组。 步骤一:确定编码方式 在转换字符串为字节数组之前,我们需要先确定编码格式。C#中支持下列编码方式: ASCII Unicode UTF-7 UTF-8 UTF-16 每一种编码方式对应的编码类名为: ASCII编码:ASCII…

    C# 2023年6月1日
    00
  • asp最简单的生成验证码代码

    生成验证码是一种常见的验证身份与防止恶意攻击的方法。在ASP上生成验证码可以用一些现成的工具或者自己编写代码实现。下面是ASP最简单的生成验证码代码及其攻略,包含了两条示例说明: 生成验证码的原理 生成验证码有一个基本的原理,就是将一段字符随机渲染到图像上,然后用户需要通过输入图像上的字符来证明他们是人类而不是机器。根据这个原理,我们可以使用ASP内置的组件…

    C# 2023年5月31日
    00
  • C# WebClient类用法实例

    C# WebClient类用法实例 简介 WebClient类是C#中提供的常用的网络编程类。它提供了以编程方式访问Web服务器资源的功能。利用WebClient对象,可以在应用程序中实现与HTTP,FTP和其他Internet协议的通信。 使用WebClient类下载文件 下面是一个示例,演示了如何使用WebClient类下载一个文件到本地。 using …

    C# 2023年6月1日
    00
  • C#读取文件所有行到数组的方法

    C#中读取文件所有行到数组的方法有多种,以下分别介绍: 方法一:使用File.ReadAllLines()方法 使用File.ReadAllLines()可以方便地将文件中的行读取到字符串数组中。 string[] lines = File.ReadAllLines("test.txt"); 其中,”test.txt”为待读取的文件路径。…

    C# 2023年6月1日
    00
  • c#初学简单程序实例代码介绍

    下面是详细讲解“c#初学简单程序实例代码介绍”的完整攻略: 一、前言 C# 是一门很好的面向对象编程语言,初学者可以先从一些简单的程序开始学起,逐步提升自己的编程能力。本篇文章将为大家介绍一些 C# 初学简单程序的实例代码,希望对初学者有所帮助。 二、示例说明 1. Hello World 程序 Hello World 程序是所有编程语言学习的第一步。下面是…

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