Asp.net 中文件以Binary 形式数据库的保存和读取
数据表部分
前台- File_upload.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="File_Upload.aspx.cs" Inherits="File_Upload" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>多文件上传</title>
<script language="JavaScript">
function addFile()
{
var str = '<INPUT type="file" size="50" NAME="File">'
document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str)
}
</script>
</head>
<body>
<form id="form2" method="post" runat="server" enctype="multipart/form-data">
<div align="center">
<h3>多文件上传</h3>
<P id="MyFile"><INPUT type="file" size="50" NAME="File"></P>
<P>
<input type="button" value="增加(Add)" onclick="addFile()">
<input onclick="this.form.reset()" type="button" value="重置(ReSet)">
<asp:Button Runat="server" Text="开始上传" ID="Button1" OnClick="UploadButton_Click"></asp:Button>
</P>
<P>
<asp:Label id="strStatus" runat="server" Font-Names="宋体" Font-Bold="True" Font-Size="9pt"
Width="500px" BorderStyle="None" BorderColor="White"></asp:Label>
</P>
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="335px" OnRowCommand="Gridview_RowCommand">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" />
<asp:BoundField DataField="Name" />
<asp:ButtonField ButtonType="Image" CommandName="Download" HeaderText="Download" ImageUrl="~/images/mailto.gif"
Text="Download" />
</Columns>
</asp:GridView>
</div>
</form>
</body>
</HTML>
后台:File_Upload.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Data.Sql;
using System.Data.SqlClient;
public partial class File_Upload : System.Web.UI.Page
{
private string connString;
private void InitalDB()
{
string uid = System.Configuration.ConfigurationManager.AppSettings.Get("uid");
string pwd = System.Configuration.ConfigurationManager.AppSettings.Get("pwd");
string server = System.Configuration.ConfigurationManager.AppSettings.Get("server");
string database = System.Configuration.ConfigurationManager.AppSettings.Get("database");
connString = "Server=" + server + ";uid=" + uid + ";pwd=" + pwd + ";database=" + database;
}
protected void Page_Load(object sender, EventArgs e)
{
InitalDB();
BindData();
}
protected void UploadButton_Click(object sender, EventArgs e)
{
///'遍历File表单元素
HttpFileCollection files = HttpContext.Current.Request.Files;
/// '状态信息
System.Text.StringBuilder strMsg = new System.Text.StringBuilder();
strMsg.Append("上传的文件分别是:<hr color=red>");
try
{
for (int iFile = 0; iFile < files.Count; iFile++)
{
///'检查文件扩展名字
HttpPostedFile postedFile = files[iFile];
string fileName, fileExtension;
fileName = System.IO.Path.GetFileName(postedFile.FileName);
if (fileName != "")
{
fileExtension = System.IO.Path.GetExtension(fileName);
strMsg.Append("上传的文件类型:" + postedFile.ContentType.ToString() + "<br>");
strMsg.Append("客户端文件地址:" + postedFile.FileName + "<br>");
strMsg.Append("上传文件的文件名:" + fileName + "<br>");
strMsg.Append("上传文件的扩展名:" + fileExtension + "<br><hr>");
///'可根据扩展名字的不同保存到不同的文件夹
///注意:可能要修改你的文件夹的匿名写入权限。
///
FileStream fs = new FileStream(postedFile.FileName, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] bytes = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
SqlConnection myConn = new SqlConnection(connString);
string strComm = "insert into tb_files(name,File_Data,File_Size)values('" + fileName + "',@FileBinary, '" + fileName.Length + "')";
SqlCommand myComm = new SqlCommand(strComm, myConn);
myComm.Parameters.Add("@FileBinary", SqlDbType.Image);
myComm.Parameters["@FileBinary"].Value = bytes;
myConn.Open();
myComm.ExecuteNonQuery();
myConn.Close();
//postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("images/") + fileName);
}
}
strStatus.Text = strMsg.ToString();
}
catch (System.Exception Ex)
{
strStatus.Text = Ex.Message;
}
}
private void BindData()
{
DataTable dt = new DataTable();
SqlConnection myConn = new SqlConnection(connString);
string sql = "select id,name,File_Size from tb_files ";
myConn.Open();
SqlDataAdapter adp=new SqlDataAdapter(sql,myConn);
adp.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}
protected void Gridview_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Download")
{
DataTable dt = new DataTable();
SqlConnection myConn = new SqlConnection(connString);
string sql = "select id,name,File_Size,file_data from tb_files where id='9' ";
myConn.Open();
SqlDataAdapter adp = new SqlDataAdapter(sql, myConn);
adp.Fill(dt);
if (dt.Rows.Count > 0)
{
Response.Buffer = true;
Response.Clear();
Response.ContentType = "application/x-msexcel";
Response.BinaryWrite((byte[])dt.Rows[0]["file_data"]);
}
}
}
}
---Result---
分享到:
相关推荐
本文将详细介绍如何在ASP.NET环境中实现文件上传,并将其存储到不同的数据库类型,如Access和SQL Server。 首先,我们需要一个HTML表单来让用户选择要上传的文件。在ASP.NET中,这通常是一个`<input>`元素,其`type...
### ASP.NET 实现从数据库中下载以二进制存储的图片 #### 背景介绍 在Web开发中,经常需要处理图像等多媒体文件。这些文件通常体积较大且格式多样,因此选择合适的方式进行存储至关重要。一种常见的做法是将图片以...
6. **从数据库读取图片**:读取数据库中的图片,需要检索其二进型数据,然后写入Response流。在ASP.NET中,可以设置`Response.ContentType`为图片的MIME类型,如"image/jpeg",然后用`Response.BinaryWrite()`方法...
SQL Server提供了一个特别的数据类型:image,它是一个包含binary数据的类型。下边这个例子就向你展示了如何将文本或照片放入到数据库中的办法。在这篇文章中我们要看到如何在SQL Server中存储和读取图片。
对于下载的"asp.net NBearV3.5.6_binary"压缩包,开发者应按照官方文档或示例代码,将对应的DLL文件添加到项目的引用中,并配置数据库连接字符串,即可开始使用NBear进行数据操作。在实际项目中,结合ASP.NET的MVC...
在ASP.NET(C#)开发中,常常需要处理存储在SQL Server数据库中的二进制数据,例如图片、PDF文档等。本教程将详细讲解如何从数据库中下载这些以二进制形式存储的图片。 首先,我们需要了解数据库中二进制数据的存储...
5. **图片数据的读写**:在ASP.NET中,可以使用`FileStream`读取本地文件,然后创建`MemoryStream`,再将文件流复制到内存流。在保存到数据库时,可以将内存流的缓冲区转换为字节数组,然后插入到数据库。相反,从...
在Winform应用中,文件通常在本地机器上处理和显示,因此可以直接从数据库读取BLOB数据并显示。而在ASP.NET Web应用中,文件通常存储在服务器上,客户端通过URL访问,因此更倾向于使用文件流存储。 ### 安全性和...
7. **图片保存到数据库和从数据库读取图片并显示**:在ASP.NET中,可以将图片数据转换为字节数组,然后存储在数据库的BLOB(Binary Large Object)字段中。读取时再将字节数组转换回图片,通过Image控件显示。这种...
2. ADO.NET:ASP.NET项目中,数据库交互通常通过ADO.NET进行,这是一个.NET Framework的一部分,用于连接、查询和操作数据库。开发者可能会使用Connection对象建立数据库连接,Command对象执行SQL命令,DataAdapter...
在C#编程中,保存任何类型的文件到本地磁盘以及从数据库导出文件是常见...在实际项目中,可能还需要结合其他技术和框架,如Entity Framework进行ORM操作,或者使用ASP.NET MVC/ASP.NET Core处理Web上的文件上传和下载。
在 ASP.NET 中,处理图片上传和显示是常见的需求,特别是对于那些需要用户交互和数据存储的应用,如个人相册、社交媒体等。 首先,我们来看第一种方法,即存储图片的相对路径到数据库。这种方法的优点在于实现简单...
此外,“读取并显示数据库中以二进制方式存储图片”是与上一步紧密相关的。在ASP.NET中,我们可以创建一个HttpHandler(ASHX)来处理请求,从数据库中检索图片的二进制数据,设置响应的Content-Type为图像类型(如...
在ASP.NET开发中,有时我们需要处理图片数据,例如从数据库中读取图片或者上传图片到服务器。本知识点将深入探讨如何使用C#语言通过二进制数据流来显示图片,这是在网络应用程序中处理图像文件的一种常见方法。我们...
ASP.NET 2中随机读取Access记录的问题主要源于ADO访问Access数据库时的缓存机制,这可能导致在尝试按随机顺序获取记录时无法得到预期的结果。为了解决这个问题,我们可以采用一种巧妙的方法,通过在SQL查询中引入一...
在ASP.NET开发中,将图片存储到数据库作为二进制文件是一种常见的做法,尤其是在需要对图像数据进行管理和检索时。这种技术允许我们把图像数据转换为二进制格式,然后将其存储在数据库的BLOB(Binary Large Object)...
在ASP.NET中,可以通过`HttpPostedFileBase`类来访问和处理上传的文件。文件数据可以存储在服务器的文件系统中,或者直接保存到数据库。 3. **文件保存到数据库**:虽然常规做法是将文件保存在服务器的文件系统,但...
一种简单的方法是使用ASP.NET中的`Image`控件来显示图片。可以通过以下步骤实现: 1. **从数据库读取二进制数据**:使用`SqlCommand`执行查询语句,获取存储在数据库中的二进制数据。 2. **将二进制数据转换为图片*...
综上所述,这个ASP.NET程序提供了一个综合解决方案,实现了在SQL Server数据库中存储多媒体文件,并在Web页面上直接播放。这涉及到了数据库设计、ADO.NET操作、C#编程、用户界面控件以及多媒体播放技术等多个方面的...