posts - 2,comments - 0,trackbacks - 0

在ASP.NET的Web页面中怎样上传文件?
怎样使用ADO.NET技术从数据库中读取一幅图片,并在Web页面上显示?


摘要
.NET是由微软开发的一种新型的分布式计算平台,ASP.NET是它针对Web开发的编程模式。本文的目的是在开发数据驱动的ASP.NET Web应用程序中获取一些好的经验。这个应用程序将告诉你怎么把一幅图片保存到数据库中以及怎样把图片从数据库中读取出来。它以ADO.NET作为数据访问机制,C#作为编程语言,SQL 2000 Server作为后台数据库。

概述
一般的,很大的图片文件往往被保存在Web服务器的文件夹中,而不是数据库中。在一些实例中,以银行系统为例,人们先把用户的签名做成图片文件,然后保存到数据库中。

数据库模式

在这个示范中,微软的sql 2000 Server被用作后台数据库。我使用了一种比较特殊的数据类型 image 。这 image 数据类型是被用来保存图片到数据库的。

所使用的控件:

system.web.ui.htmlcontrols.htmlinputfile

system.web.ui.webcontrols.textbox

system.web.ui.webcontrols.button

所使用的名字空间:

using System.Data.SqlClient;

using System.Drawing;

using System.Data;

using System.IO;

using System.Drawing.Imaging;

编码
使用 HtmlInputFile 类,它可以用 <input type="file" runat="server"/> 标签来声明一个实例。下面的例子是一个完整的 ASPX 文件,它让用户上传图片文件以及图片的说明。OnUpload 方法把图片以及说明写到iSense 数据库的Picture 表中。

// 保存图片文件到数据库的源码

public void OnUpload(Object sender, EventArgs e)
{
// 从输入文件中创建一个 byte[]
int len = Upload.PostedFile.ContentLength;
byte[] pic = new byte[len];
Upload.PostedFile.InputStream.Read (pic, 0, len);
// 插入图片和说明到数据库中
SqlConnection connection = new
SqlConnection (@"server=INDIA\INDIA;database=iSense;uid=sa;pwd=india");
try
{
connection.Open ();
SqlCommand cmd = new SqlCommand ("insert into Image "
+ "(Picture, Comment) values (@pic, @text)", connection);
cmd.Parameters.Add ("@pic", pic);
cmd.Parameters.Add ("@text", Comment.Text);
cmd.ExecuteNonQuery ();
}
finally
{
connection.Close ();
}
}
上面创建的函数可以通过使用按钮的 onClick 属性来调用。

如何使用ado.net技术从数据库中读取图片并把它显示在web页面上?
这里,我使用Web页面来显示图片,而没有用其他任何控件。下面的代码是用来显示数据库中的图片。

private void Page_Load(object sender, System.EventArgs e)
{
MemoryStream stream = new MemoryStream ();
SqlConnection connection = new
SqlConnection (@"server=INDIA\INDIA;database=iSense;uid=sa;pwd=india");
try
{
connection.Open ();
SqlCommand command = new
SqlCommand ("select Picture from Image", connection);
byte[] image = (byte[]) command.ExecuteScalar ();
stream.Write (image, 0, image.Length);
Bitmap bitmap = new Bitmap (stream);
Response.ContentType = "image/gif";
bitmap.Save (Response.OutputStream, ImageFormat.Gif);
}
finally
{
connection.Close ();
stream.Close ();
}
}
GDI+函数为操作和定义图片提供了一个丰富的功能集合。本文的例子只能看到它的一小部分功能。你可以使用 System.Drawing 和 System.Drawing.Imaging 名字空间来调用这些功能。举例来说,你可以开发在Web上保存和管理图片文件的应用程序,或者你可以一个简单、易配置的应用程序使用户能够操作图片。

posted @ 2006-10-12 16:28 牛排 阅读(257) | 评论 (0)编辑 收藏
  尔然在网上看到,觉得很搞笑,就想发上来给大家看看。


美国联邦法律规定 

  1)不得与豪猪发生性关系。(靠,谁敢呀) 

  2)每周四晚6:00以后不得放p。(以后还真要小心了,别一不留神坐牢了还不知为啥) 

  3)任何人不得销售其子女。(好象中国也不许吧) 

  阿拉巴马州: 

  无论任何时候,将冰激淋卷放在口袋里是违法的。(有病丫的) 

  阿肯色州: 

  男性可以合法殴打其配偶,但每月最多一次。(估计很多东北的兄弟知道了一定想移民阿肯色了,可也有例外呀,克林顿就是阿肯色的前州长,咋老被喜莱莉扁呀) 

  亚利桑纳州: 

  任何房间中不得有两根以上的假****。(估计那州的最高法官丫是个变态狂!) 

  夏威夷州: 

  不得将谷物放在耳朵里。(神经病,以为偷太空种子呀) 

  印弟安纳州: 

  1)任何年满18岁的男性,若与17岁以下的女性发生性关系,而且当时她又没穿鞋袜,那将课重罪。(兄弟们千万注意了呀!别全脱了) 

  2)圆周率在该州法定为4。(活活气死咱祖冲之前辈呀!) 

  爱荷华州: 

  1)任何只有一只上臂的钢琴演奏者必须免费演奏。(严重歧视残疾艺术表演家) 

  2)任何有胃病的男性不得在公共场所与女性接吻。(接吻和胃有关系吗?男性胃癌晚期患者的福音) 

  纽约州: 

  1)不得仅为娱乐而将球砸向他人脑袋。(谋杀可以不?真的脑子进水了) 

  2)10:00以后不得穿拖鞋。(光脚吧) 

  新泽西州: 

  凡谋杀时不得穿防弹背心。(管得着吗,警察这么没自信!) 

  北卡州: 

  任何一位未婚男性与一位未婚女性,如果在任何旅馆或汽车旅馆登记为已婚,那么他们即算合法夫妻了。(想带小蜜开房的兄弟们千万别去那州呀!) 

  宾西法尼亚州: 

  不得在浴室唱歌。(难怪在宾大商学院的同胞都不会k歌) 

  南卡州: 

  仅在每周六,男性被允许在法院的门前台阶上合法殴打其配偶。(这是啥规定,郁闷ing) 

  犹他州: 

  1)不喝牛奶违法。(喝不完援助非洲难民呀,干么为难自己!难怪俺一个只要喝牛奶就拉肚子的朋友从犹大转到纽约了,保命要紧呀。) 
posted @ 2006-10-10 10:10 牛排 阅读(416) | 评论 (1)编辑 收藏
仅列出标题