### C# ASP.NET 图片存进数据库二进制与读取 #### 一、概述 在Web开发中,经常需要处理图片数据。特别是在ASP.NET框架下,如何将用户上传的图片存储到数据库,并且能够在需要时正确地读取出来显示或进行其他操作,是一个常见的需求。本文将详细介绍如何使用C#结合ASP.NET实现这一功能。 #### 二、存储图片到数据库 ##### 1. 获取上传文件信息 - 通过`FileUpload1.PostedFile.FileName`获取上传文件的完整路径。 - 使用`Substring`方法截取文件扩展名,用于后续判断文件类型是否为图片。 ```csharp string name = FileUpload1.PostedFile.FileName; string type = name.Substring(name.LastIndexOf(".") + 1); ``` ##### 2. 读取文件为二进制数组 - 使用`FileStream`类打开文件,并读取其所有内容到一个二进制数组`byte[] content`中。 - 注意:确保文件流最后关闭。 ```csharp FileStream fs = File.OpenRead(name); byte[] content = new byte[fs.Length]; fs.Read(content, 0, (int)content.Length); fs.Close(); ``` ##### 3. 连接数据库并插入数据 - 建立SQL Server数据库连接。 - 创建SQL命令用于插入图片数据。 - 检查文件类型是否为允许的图片格式(如JPG、GIF、BMP、PNG)。 ```csharp using(SqlConnection cn = new SqlConnection("DataSource=4-05\\SQLEXPRESS;InitialCatalog=News123;IntegratedSecurity=True")) { using(SqlCommand cm = new SqlCommand("INSERT INTO image(image) VALUES (@image)", cn)) { cn.Open(); if (type == "jpg" || type == "gif" || type == "bmp" || type == "png") { cm.Parameters.Add("@image", SqlDbType.Image); cm.Parameters["@image"].Value = content; cm.ExecuteNonQuery(); cn.Close(); } Response.Write("成功保存图片。"); } } ``` #### 三、从数据库读取图片 ##### 1. 建立数据库连接 - 与存储过程相同,这里也使用`SqlConnection`连接数据库。 - 使用`SqlCommand`执行查询命令,根据ID或其他条件获取指定图片。 ```csharp using(SqlConnection cn = new SqlConnection("DataSource=4-05\\SQLEXPRESS;InitialCatalog=News123;IntegratedSecurity=True")) { using(SqlCommand cm = new SqlCommand("SELECT image FROM image WHERE id = 2", cn)) { cn.Open(); using(SqlDataReader sdr = cm.ExecuteReader()) { if (sdr.Read()) { Response.BinaryWrite((byte[])sdr["image"]); // 显示图片 Response.End(); } } } } ``` ##### 2. 显示图片 - 在Web页面上,可以将读取出来的图片数据直接输出到客户端浏览器。 - 可以使用`Response.BinaryWrite`方法直接写入二进制数据。 - 或者,可以在ASP.NET页面中创建一个图片控件,将其`ImageUrl`属性设置为返回图片数据的方法地址。 #### 四、注意事项 - **安全性**:确保对上传文件进行严格的验证和过滤,防止恶意文件上传。 - **性能考虑**:大量存储图片至数据库可能会影响性能,可以考虑使用文件系统或云存储服务作为替代方案。 - **兼容性问题**:在不同的浏览器中,对于图片的处理可能会有所不同,需测试并确保兼容性良好。 #### 五、总结 通过以上步骤,我们可以有效地在ASP.NET应用程序中实现图片的存储和读取。这种方法不仅适用于简单的图片管理场景,也可以扩展到更复杂的图片处理应用中。在实际项目开发过程中,还需要考虑到安全性、性能和用户体验等多个方面的问题。
{
///////////////////////////////////
string name = FileUpload1.PostedFile.FileName;
string type = name.Substring(name.LastIndexOf(".") + 1);
FileStream fs = File.OpenRead(name);
byte[] content = new byte[fs.Length];
fs.Read(content, 0, content.Length);
fs.Close();
SqlConnection cn = new SqlConnection("Data Source=4-05\\SQLEXPRESS;Initial Catalog=News123;Integrated Security=True");
SqlCommand cm = new SqlCommand("insert into image(image) values(@image)", cn);
cn.Open();
if (type == "jpg" || type == "gif" || type == "bmp" || type == "png")
{
cm.Parameters.Add("@image", SqlDbType.Image);
cm.Parameters["@image"].Value = content;
cm.ExecuteNonQuery();
cn.Close();
}
Response.Write("保存成功");
}
protected void Button2_Click(object sender, EventArgs e)
{
SqlConnection cn= new SqlConnection("Data Source=4-05\\SQLEXPRESS;Initial Catalog=News123;Integrated Security=True");
- 粉丝: 2
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 毕业设计-使用pytorch实现的人脸表情识别项目-项目实战-项目源码-优质项目.zip
- 数据快速迁移工具:EnhancedScroller v2.37.1
- comprehensive-tools之添加菜单栏
- ZygiskNext 1.2.0 正式版
- react+vite+antd
- 基于形态学操作的文字区域检测及光学字符识别系统python源码含GUI可视化界面+超详细注释.zip
- 毕业设计-使用lightopenpose开发的跌倒检测+异常行为检测项目-项目实战-项目源码-优质项目.zip
- 益达.base.apk
- 毕业设计-使用Keras开发的人脸表情识别项目-项目实战-项目源码-优质项目.zip
- openssl1.1.1w源码,windows x64、x86编译库
- 1
- 2
前往页