首先,我们需要了解一下在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技术站