ASP.NET 上传图片至数据库并读取图片显示--二进制流方式
来源:互联网 发布:向ncbi上传转录组数据 编辑:程序博客网 时间:2024/04/28 07:50
以二进制流的方式存入数据库,并读取显示
数据库的字段同样简单:
Image_ID int identity(1,1) primarykey not null
Image_Content image null
Image_Content以二进制形式保存图片
整体看一下例子里的页面组成:
上传图片页面和第一种方法一样,同样是用到FileUpload,以及一个Button,具体代码如下:
protectedvoid Button1_Click(object sender, EventArgs e)
{
string name= FileUpload1.PostedFile.FileName;
string type= name.Substring(name.LastIndexOf(".")+ 1);
FileStream fs = File.OpenRead(name);
byte[] content= newbyte[fs.Length];
fs.Read(content, 0, content.Length);
fs.Close();
SqlConnection conn =new SqlConnection("Data Source=;Initial Catalog=;Persist Security Info=True;User ID=;Pooling=False;Password=");
SqlCommand cmd = conn.CreateCommand();
conn.Open();
cmd.CommandText ="insert into Images(Image_Content) values (@content)";
cmd.CommandType = CommandType.Text;
if (type== "jpg"|| type == "gif"|| type == "bmp"|| type == "png")
{
SqlParameter para = cmd.Parameters.Add("@content", SqlDbType.Image);
para.Value = content;
cmd.ExecuteNonQuery();
}
}
{
string name= FileUpload1.PostedFile.FileName;
string type= name.Substring(name.LastIndexOf(".")+ 1);
FileStream fs = File.OpenRead(name);
byte[] content= newbyte[fs.Length];
fs.Read(content, 0, content.Length);
fs.Close();
SqlConnection conn =new SqlConnection("Data Source=;Initial Catalog=;Persist Security Info=True;User ID=;Pooling=False;Password=");
SqlCommand cmd = conn.CreateCommand();
conn.Open();
cmd.CommandText ="insert into Images(Image_Content) values (@content)";
cmd.CommandType = CommandType.Text;
if (type== "jpg"|| type == "gif"|| type == "bmp"|| type == "png")
{
SqlParameter para = cmd.Parameters.Add("@content", SqlDbType.Image);
para.Value = content;
cmd.ExecuteNonQuery();
}
}
显示一张图片和显示一组图片有所不同,将会分别说明之。
显示一张图片,要用到Default.aspx和Default2.aspx。Default.aspx中有一个控件Image,它的属性ImageUrl指向Default2.aspx用于显示图片。Default2.aspx用于
读取图片。
Default.aspx.cs
protectedvoid Page_Load(object sender, EventArgs e)
{
Image1.ImageUrl ="Default2.aspx";
}
Default2.aspx.cs
string imgid = Request.QueryString["imgid"];
SqlConnection conn1 =new SqlConnection("Data Source=;Initial Catalog=;Persist Security Info=True;User ID=sa;Pooling=False;Password=");
SqlCommand cmd1 =new SqlCommand("select Image_Content from Images where Image_ID=3", conn1); //固定显示Image_ID为3的图片
conn1.Open();
SqlDataReader sdr = cmd1.ExecuteReader();
if (sdr.Read())
{
Response.BinaryWrite((byte[])sdr["Image_Content"]);
}
Response.End();
{
Image1.ImageUrl ="Default2.aspx";
}
Default2.aspx.cs
string imgid = Request.QueryString["imgid"];
SqlConnection conn1 =new SqlConnection("Data Source=;Initial Catalog=;Persist Security Info=True;User ID=sa;Pooling=False;Password=");
SqlCommand cmd1 =new SqlCommand("select Image_Content from Images where Image_ID=3", conn1); //固定显示Image_ID为3的图片
conn1.Open();
SqlDataReader sdr = cmd1.ExecuteReader();
if (sdr.Read())
{
Response.BinaryWrite((byte[])sdr["Image_Content"]);
}
Response.End();
显示一组图片时,用ashx Handle存放图片。同时用GridView以列显示图片。Image控件绑定Image_ID。
allimage.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="allimage.aspx.cs" Inherits="allimage"%>
<!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>BindImg</title>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:DataGrid id="MyDataGrid" runat="server" AutoGenerateColumns="False" Width="632px">
<AlternatingItemStyle BackColor="Beige"></AlternatingItemStyle>
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="Photo">
<ItemTemplate><asp:Image ID="Image1" runat="server" Height="70px" ImageUrl='<%# "Getimg.ashx?id="+Eval("Image_ID") %>'
Width="100px"/>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid></FONT>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:PracticeConnectionString %>"
SelectCommand="SELECT * FROM [Images]"></asp:SqlDataSource>
</form>
</body>
</HTML>
<!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>BindImg</title>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:DataGrid id="MyDataGrid" runat="server" AutoGenerateColumns="False" Width="632px">
<AlternatingItemStyle BackColor="Beige"></AlternatingItemStyle>
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="Photo">
<ItemTemplate><asp:Image ID="Image1" runat="server" Height="70px" ImageUrl='<%# "Getimg.ashx?id="+Eval("Image_ID") %>'
Width="100px"/>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid></FONT>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:PracticeConnectionString %>"
SelectCommand="SELECT * FROM [Images]"></asp:SqlDataSource>
</form>
</body>
</HTML>
allimage.aspx.cs
protectedvoid Page_Load(object sender, EventArgs e)
{
MyDataGrid.DataSource = SqlDataSource1;
MyDataGrid.DataBind();
}
Getimg.ashx
<%@ WebHandler Language="C#" Class="Getimg"%>
using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public class Getimg : IHttpHandler {
public void ProcessRequest (HttpContext context)
{
int id= int.Parse(context.Request.QueryString["id"]);
SqlConnection conn =new SqlConnection(@"server=;database=;uid=;pwd=");
SqlCommand cmd =new SqlCommand("select Image_Content from Images where Image_ID='"+ id + "'", conn);
cmd.Parameters.Add("@id", SqlDbType.Int).Value= id;
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
context.Response.BinaryWrite((byte[])dr["Image_Content"]);
}
dr.Close();
}
public bool IsReusable {
get {
returnfalse;
}
}
}
转载 http://blog.163.com/sdq_1314/blog/static/166908254201081704330711/
{
MyDataGrid.DataSource = SqlDataSource1;
MyDataGrid.DataBind();
}
Getimg.ashx
<%@ WebHandler Language="C#" Class="Getimg"%>
using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public class Getimg : IHttpHandler {
public void ProcessRequest (HttpContext context)
{
int id= int.Parse(context.Request.QueryString["id"]);
SqlConnection conn =new SqlConnection(@"server=;database=;uid=;pwd=");
SqlCommand cmd =new SqlCommand("select Image_Content from Images where Image_ID='"+ id + "'", conn);
cmd.Parameters.Add("@id", SqlDbType.Int).Value= id;
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
context.Response.BinaryWrite((byte[])dr["Image_Content"]);
}
dr.Close();
}
public bool IsReusable {
get {
returnfalse;
}
}
}
转载 http://blog.163.com/sdq_1314/blog/static/166908254201081704330711/
- ASP.NET 上传图片至数据库并读取图片显示--二进制流方式
- ASP.NET 上传图片至数据库并读取图片显示
- ASP.NET 上传图片至数据库并读取图片显示
- asp.net 庶罩层上传图片(二进制),并显示二进制图片
- ASP.NET上传图片至数据库并显示图片
- ASP.net:上传图片以二进制插入到数据库,且读取显示
- ASP.Net将图片以二进制方式存入数据库,并读取
- ASP.Net将图片以二进制方式存入数据库,并读取
- asp.net 读取数据库二进制图片
- asp.net上传图片并显示相册
- asp.net上传图片并显示
- .Net读取数据库中的图片并显示
- asp.net 图片上传至服务器并显示
- Delphi以二进制方式读取图片并显示出来
- 上传图片以二进制插入到数据库,且读取显示
- 上传图片以二进制插入到数据库,且读取显示
- 上传图片以二进制插入到数据库,且读取显示
- 上传图片以二进制插入到数据库,且读取显示
- 非托管C++代码调用C#编写的dll方法
- BIEE Oracle BI Presentation Sever 无法启动
- jdbc连接access
- skia引擎API整理
- 一个老外眼中的创新和“微创新”
- ASP.NET 上传图片至数据库并读取图片显示--二进制流方式
- Android 2.1 源码结构分析
- MDX查询个人小节
- 时间比较的SQL语句片段
- tp 驱动分析记
- 高质量C++编程_第6章_函数设计(2)
- C语言课程设计
- Android 创建与解析XML(二)—— Dom方式
- “编程思维”与“编程思维”的培养