sqlserve2000中的图片怎木显示出来? seeRetrieving Images from SqlServer and displaying in a DataGrid - ASP .NEThttp://aspalliance.com/das/datagridimages.aspx 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在这个字段中存你的图片的地址(eg: images/aa1.gif) 大致的思路是将图片转换为大二进制数据,再保存在SQL中,打开的时候又再将二进制数转换成图形文件,网上有很多的例子的,自己找找啦. 这个问题前些日子我问过。下面是上传图片(直接进入数据库)protected System.Web.UI.HtmlControls.HtmlInputFile DOC_File;Stream imgStream;int imgLen;string imgName_value;string imgContentType;string imgUploadedName;//获取文件IO对象,准备上传imgStream = DOC_File.PostedFile.InputStream;//获得文件大小imgLen = DOC_File.PostedFile.ContentLength;//获得客户端文件名imgUploadedName = DOC_File.PostedFile.FileName;byte[] imgBinaryData=new byte[imgLen];//获得文件类型imgContentType = DOC_File.PostedFile.ContentType;int n = imgStream.Read(imgBinaryData, 0, imgLen); //写入数据库int NumRowsAffected = 插入数据库函数if(NumRowsAffected > 0)Mess.Text="上传成功";elseMess.Text="上传失败";输出:如果是用DataGrid,看上面答复这是spring_ok给我的答复<img src=showimg.aspx?id=123>showimg.aspx 中用 Response.BinaryWrite((byte[])dr["图像之段"]);来输出图片。 我问的问题现已经解决了,关于图片往数据库存取的帖子不少,但是FAQ里面没有关于这方面的东西,我就整理出来方便大家,如果有什么不足的地方请多指正。---------------------------------------------------------------------------------------------在这里我整理一下关于如何把图片数据(或是其他文件的数据)如何存入数据库,并且实现从数据库读取现实在页面上。(这里用图片作为例子,实现图片的存入、读取然后在显示在一个网页指定位置)/////////////////////////////////////////////////插入图片的必要条件 在我们开始上传之前,有两件重要的事我们需要做: #Form 标记的 enctype 属性应该设置成 enctype="multipart/form-data" #需要一个<input type=file>表单来使用户选择他们要上传的文件,同时我们需要导入 System.IO名称空间来处理流对象 同时我们需要对SqlServer做以下的准备:在SQL Server中建立一个图片存储的数库表,Imgdata Column为图象二进制数据储存字段,imgtypeColumn为图象文件类型记录字段,结构如下:CREATE TABLE [dbo].[ImageStore] ( [ImageID] [int] IDENTITY (1, 1) NOT NULL , [Imgdata] [image] NULL , [imgtype] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]//////////////////////////////////////////////////////////存入数据库///////////////////////////////////////////////////////using System;using System.IO;using System.Collections;using System.ComponentModel;using System.Data;using System.Data.SqlClient;using System.Drawing;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;namespace HNANetAdmin{/// <summary>/// 图片插入数据库。/// Author: zhou_min/// Date: 2002-10-24/// </summary>public class AddImage : System.Web.UI.Page{ protected System.Web.UI.WebControls.Button Button1; protected System.Web.UI.HtmlControls.HtmlInputFile File1; private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } private void InitializeComponent() { this.Button1.Click += new System.EventHandler(this.Button1_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void Button1_Click(object sender, System.EventArgs e) { Stream imgdatastream = File1.PostedFile.InputStream;//读取数据流 int imgDataLen = File1.PostedFile.ContentLength;//图片长度 string imgType = File1.PostedFile.ContentType;//图片类型 byte[] imgData = new byte[imgDataLen];//临时存放图片二进制数组 imgdatastream.Read(imgData,0,imgDataLen);//图片二进制放入临时数组 //调用函数把图片二进制文件插入数据库 InsertImgData(imgType,imgData); } private void InsertImgData(string imgType,byte[] imgData) { //数据库连接 string connstr="Data Source=10.2.10.34;database=pubs;uid=sa;pwd=sa;"; SqlConnection connection = new SqlConnection(connstr); //插入语句 SqlCommand command = new SqlCommand("INSERT INTO ImageStore(imgtype,imgdata)VALUES ( @imgtype,@imgdata )", connection ); //插入参数 SqlParameter paramData = new SqlParameter( "@imgdata", SqlDbType.Image ); paramData.Value = imgData; command.Parameters.Add( paramData ); SqlParameter paramType = new SqlParameter( "@imgtype", SqlDbType.VarChar,50 ); paramType.Value = imgType; command.Parameters.Add( paramType ); //打开连接 connection.Open(); //执行插入 command.ExecuteNonQuery(); //关闭连接 connection.Close(); } }}//////////////////////////////////////////////////////////取出图片//////////////////////////////////////////////////////using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Data.SqlClient;using System.Drawing;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;namespace HNANetAdmin{/// <summary>/// 显示数据库中图片。///Author: zhou_min/// Date: 2002-10-24/// </summary>public class DisplayImg : System.Web.UI.Page { private void Page_Load(object sender, System.EventArgs e) { if(!Page.IsPostBack) Display(); } private void Display() { string imgid =Request.QueryString["imgid"];//显示图片Id //数据库连接 string connstr="Data Source=10.2.10.34;database=pubs;uid=sa;pwd=sa;"; string sql="SELECT imgdata, imgtype FROM ImageStore WHERE id = '"+ imgid + "'"; SqlConnection connection = new SqlConnection(connstr); SqlCommand command = new SqlCommand(sql, connection); connection.Open(); SqlDataReader dr = command.ExecuteReader(); //显示图片 if(dr.Read()) { Response.ContentType = dr["imgtype"].ToString(); Response.BinaryWrite( (byte[]) dr["imgdata"] ); } //关闭连接 connection.Close(); } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion }}////////////////////////////////////////////////////在一个页面指定显示位置////////////////////////////////////////////////从数据库取出来的图片在wfmDisplayImage.aspx实现了显示,现在我所做的工作就是要绑定图片到DataList上如下程序:<asp:DataList id="dlDisplayImage" runat="server"> <ItemTemplate> <img src='wfmDisplayImage.aspx?cncCode=<%# DataBinder.Eval(Container.DataItem,"cncCode")%>' /> </ItemTemplate></asp:DataList>可是我运行时提示“Compiler Error Message: CS1010: Newline in constant”请问一下会在哪里出问题呢,有什么解决方法呢?--------------------------------------------------------------------后台的代码如下:DataRow drHuman = dsHuman.Tables["dtRetu"].Rows[0];drHuman["cncCode"] = drHuman["cncCode"].ToString().Trim();dlDisplayImage.DataSource = drHuman;dlDisplayImage.DataBind(); 参考如下帖子:http://expert.csdn.net/Expert/topic/1179/1179456.xml?temp=.550091http://expert.csdn.net/Expert/topic/1179/1179456.xml?temp=.1079218 这个我依照网上的做了一个,思路与上面一样,但在display.aspx.cs中是Response.ContentType = dr["Pic_type"].ToString(); Response.BinaryWrite( (byte[]) dr["New_pic"] );在display.aspx中显示为System.byte[]; 怎么把最后的结果传给<img src=>属性呢?这里不用datagrid因为显示的是新闻的图片,一行行排列下来就行了.. 现在图片是可以显示出来了,但还有一个问题:一个页面只能放图片,我要搞一个新闻系统,除了图片,还有内容都要在一个页面显示,那怎么定位图片把Response.BinaryWrite( (byte[]) dr["New_pic"] );与<img>挂钩,html和web的img控件我都没试成功???? 关于正则表达式的问题! ZedGraph,双y坐标 如何判断会员资料完成程度的? Repeater控件与UpdatePanel 高手请进,问题很急. .net2.0中开发wap的一个问题 求比较好的.net开发wap的论坛 急(在线等待) 怎么样可以使GridView不执行数据中间HTML代码 登陆验证的问题,请大家帮忙! treeview问题???急急急急急!!!!!!!!! sos-关于文件下载! ★求救!我的Aspx文件可以运行,但Asp文件却不能运行了!
打开的时候又再将二进制数转换成图形文件,
网上有很多的例子的,自己找找啦.
下面是上传图片(直接进入数据库)
protected System.Web.UI.HtmlControls.HtmlInputFile DOC_File;Stream imgStream;
int imgLen;
string imgName_value;
string imgContentType;
string imgUploadedName;
//获取文件IO对象,准备上传
imgStream = DOC_File.PostedFile.InputStream;
//获得文件大小
imgLen = DOC_File.PostedFile.ContentLength;
//获得客户端文件名
imgUploadedName = DOC_File.PostedFile.FileName;
byte[] imgBinaryData=new byte[imgLen];
//获得文件类型
imgContentType = DOC_File.PostedFile.ContentType;int n = imgStream.Read(imgBinaryData, 0, imgLen);
//写入数据库
int NumRowsAffected = 插入数据库函数
if(NumRowsAffected > 0)
Mess.Text="上传成功";
else
Mess.Text="上传失败";输出:
如果是用DataGrid,看上面答复这是spring_ok给我的答复
<img src=showimg.aspx?id=123>
showimg.aspx 中用 Response.BinaryWrite((byte[])dr["图像之段"]);来输出图片。
---------------------------------------------------------------------------------------------
在这里我整理一下关于如何把图片数据(或是其他文件的数据)如何存入数据库,并且实现从数据库读取现实在页面上。(这里用图片作为例子,实现图片的存入、读取然后在显示在一个网页指定位置)
/////////////////////////////////////////////////
插入图片的必要条件
在我们开始上传之前,有两件重要的事我们需要做:
#Form 标记的 enctype 属性应该设置成 enctype="multipart/form-data"
#需要一个<input type=file>表单来使用户选择他们要上传的文件,同时我们需要导入 System.IO名称空间来处理流对象 同时我们需要对SqlServer做以下的准备:
在SQL Server中建立一个图片存储的数库表,Imgdata Column为图象二进制数据储存字段,imgtypeColumn为图象文件类型记录字段,结构如下:
CREATE TABLE [dbo].[ImageStore]
(
[ImageID] [int] IDENTITY (1, 1) NOT NULL ,
[Imgdata] [image] NULL ,
[imgtype] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
///////////////////////////////////////////////////////
///存入数据库
///////////////////////////////////////////////////////
using System;
using System.IO;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace HNANetAdmin
{
/// <summary>
/// 图片插入数据库。
/// Author: zhou_min
/// Date: 2002-10-24
/// </summary>
public class AddImage : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.HtmlControls.HtmlInputFile File1;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void Button1_Click(object sender, System.EventArgs e)
{
Stream imgdatastream = File1.PostedFile.InputStream;//读取数据流
int imgDataLen = File1.PostedFile.ContentLength;//图片长度
string imgType = File1.PostedFile.ContentType;//图片类型
byte[] imgData = new byte[imgDataLen];//临时存放图片二进制数组
imgdatastream.Read(imgData,0,imgDataLen);//图片二进制放入临时数组
//调用函数把图片二进制文件插入数据库
InsertImgData(imgType,imgData);
} private void InsertImgData(string imgType,byte[] imgData)
{
//数据库连接
string connstr="Data Source=10.2.10.34;database=pubs;uid=sa;pwd=sa;";
SqlConnection connection = new SqlConnection(connstr); //插入语句
SqlCommand command = new SqlCommand("INSERT INTO ImageStore(imgtype,imgdata)VALUES ( @imgtype,@imgdata )", connection );
//插入参数
SqlParameter paramData = new SqlParameter( "@imgdata", SqlDbType.Image );
paramData.Value = imgData;
command.Parameters.Add( paramData );
SqlParameter paramType = new SqlParameter( "@imgtype", SqlDbType.VarChar,50 );
paramType.Value = imgType;
command.Parameters.Add( paramType );
//打开连接
connection.Open();
//执行插入
command.ExecuteNonQuery();
//关闭连接
connection.Close();
}
}
}
///////////////////////////////////////////////////////
///取出图片
//////////////////////////////////////////////////////
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace HNANetAdmin
{
/// <summary>
/// 显示数据库中图片。
///Author: zhou_min
/// Date: 2002-10-24
/// </summary>
public class DisplayImg : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
Display();
} private void Display()
{
string imgid =Request.QueryString["imgid"];//显示图片Id //数据库连接
string connstr="Data Source=10.2.10.34;database=pubs;uid=sa;pwd=sa;";
string sql="SELECT imgdata, imgtype FROM ImageStore WHERE id = '"+ imgid + "'";
SqlConnection connection = new SqlConnection(connstr);
SqlCommand command = new SqlCommand(sql, connection);
connection.Open();
SqlDataReader dr = command.ExecuteReader(); //显示图片
if(dr.Read())
{
Response.ContentType = dr["imgtype"].ToString();
Response.BinaryWrite( (byte[]) dr["imgdata"] );
} //关闭连接
connection.Close();
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
////////////////////////////////////////////////
////在一个页面指定显示位置
////////////////////////////////////////////////从数据库取出来的图片在wfmDisplayImage.aspx实现了显示,现在我所做的工作就是要绑定图片到DataList上如下程序:
<asp:DataList id="dlDisplayImage" runat="server">
<ItemTemplate>
<img src='wfmDisplayImage.aspx?cncCode=<%# DataBinder.Eval(Container.DataItem,"cncCode")%>' />
</ItemTemplate>
</asp:DataList>
可是我运行时提示“Compiler Error Message: CS1010: Newline in constant”
请问一下会在哪里出问题呢,有什么解决方法呢?
--------------------------------------------------------------------
后台的代码如下:
DataRow drHuman = dsHuman.Tables["dtRetu"].Rows[0];
drHuman["cncCode"] = drHuman["cncCode"].ToString().Trim();
dlDisplayImage.DataSource = drHuman;
dlDisplayImage.DataBind();
http://expert.csdn.net/Expert/topic/1179/1179456.xml?temp=.550091
http://expert.csdn.net/Expert/topic/1179/1179456.xml?temp=.1079218
Response.ContentType = dr["Pic_type"].ToString();
Response.BinaryWrite( (byte[]) dr["New_pic"] );
在display.aspx中显示为System.byte[];
怎么把最后的结果传给<img src=>属性呢?这里不用datagrid因为显示的是新闻的图片,一行行排列下来就行了..
把Response.BinaryWrite( (byte[]) dr["New_pic"] );与<img>挂钩,
html和web的img控件我都没试成功????