ASP.NET数据库图片存取教程:上传与导出

2 下载量 52 浏览量 更新于2024-08-31 收藏 335KB PDF 举报
本文档介绍了在ASP.NET中处理大量或大尺寸图片时,将图片存储到数据库中的方法。主要分为两个部分:通过FileUpload控件上传图片到数据库,以及通过Button控件从数据库中导出图片。 首先,关于保存图片到数据库,作者指导读者在数据库中创建一个名为"Images"的表,该表设计包含以下字段: 1. `Roll_no`:用于存储图片的登记号,作为主键,类型为varchar(12)。 2. `Name_File`:存储图片的文件名,类型为varchar(100)。 3. `Extension`:图片的扩展名,同样为varchar(100)。 4. `img`:存储图片的二进制数据,使用varbinary(max)类型,以支持大容量图片。 5. `Img_date`:记录图片的上传时间,使用datetime类型。 创建表的SQL语句如下: ```sql CREATE TABLE Images ( Roll_no varchar(12) primary key, Name_File varchar(100), Extension varchar(100), img varbinary(max), Img_date datetime ) ``` 在ASP.NET项目中,作者建议创建一个名为"ImageToBinary"的空网站,并在其中创建一个名为"Conversion.aspx"的页面。在这个页面上,开发者需要添加TextBox(用于输入图片登记号)、FileUpload控件(用户选择图片)和Button控件(触发上传操作)。在Button的Click事件处理程序中,通过System.Data.SqlClient命名空间使用C#代码将选中的图片转换为二进制流,并通过SQL INSERT语句将数据插入数据库。 例如,在Button1_Click方法中,关键代码如下: ```csharp protected void Button1_Click(object sender, EventArgs e) { // 获取上传的图片对象 HttpPostedFile file = FileUpload1.PostedFile; // 检查文件是否已选择 if (file != null) { // 将文件读取为二进制流 byte[] imageBytes = new byte[file.ContentLength]; file.InputStream.Read(imageBytes, 0, file.ContentLength); // 创建数据库连接 using (SqlConnection connection = new SqlConnection("your_connection_string")) { string query = "INSERT INTO Images (Roll_no, Name_File, Extension, img, Img_date) VALUES (@Roll_no, @FileName, @Extension, @ImageBytes, GETDATE())"; SqlCommand command = new SqlCommand(query, connection); command.Parameters.AddWithValue("@Roll_no", txtrollno.Text); command.Parameters.AddWithValue("@FileName", Path.GetFileName(file.FileName)); command.Parameters.AddWithValue("@Extension", Path.GetExtension(file.FileName)); command.Parameters.AddWithValue("@ImageBytes", imageBytes); // 执行SQL插入操作 connection.Open(); command.ExecuteNonQuery(); } // 提示用户图片已成功上传 // ... } } ``` 这部分内容详细讲解了如何在ASP.NET环境中利用FileUpload控件将图片数据存储到数据库,确保了文件大小的适应性和数据库的安全性。同时,也提到了从数据库导出图片的原理,但此处并未给出具体实现步骤,可能需要用户自行根据需求设计相应的导出逻辑。