关于ASP.NET中图片上传到MSSQL数据库以及读取的方法

本文介绍了一种将文件上传至数据库的方法,使用Image字段存储图片,并通过ASP.NET实现文件的上传与显示。文中详细描述了如何利用byte[]进行数据的读取与写入,以及如何在网页上展示这些图像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    这篇文章非常非常简单,只是一个基本代码的笔记而已。所以,已经知道方法的同学可以出去了。

       地球人都知道我们为什么要把文件上传到数据库里,所以原因我也懒得说。

        预备工作:
        在数据库方面,我们需要有一个字段,类型为Image,用来放图片的内容。

        第一步,上传:
        我还是按照我最常用的Info-Persister方式。Info类中这个字段对应的属性类型为byte[]。然后,在上传组件的PostFile中,从它的InputStream读出字节数组,就OK了。

1  int  len  =   this .File1.PostedFile.ContentLength;
2  byte [] buf  =   new   byte [len];
3 
4  Stream i  =   this .File1.PostedFile.InputStream;
5  i.Read(buf, 0 ,buf.Length);
6  ti.content = buf;  // 赋给Info的一个属性
7  i.Close();

        得到了Info就可以按常规使用Persister的create来写入数据库了,也没有什么不一样的。
        因为我比较偷懒,用的是 object[] 作为存储过程的参数,而不是setParameter方法。

        第二步,显示:
        图片的显示也很简单,在Persister中注意一下:

1  SqlDataReader reader = SqlHelper.ExecuteReader(conStr, " p_hello_get " ,objs);
2 
3  if ( reader.Read() )
4  {
5  ti.name = reader.GetString( 1 );
6  ti.content = ( byte [])reader[ 2 ];  // 最简单快速的方法就是这样
7  }
8  reader.Close();

        当然,如果你不喜欢强制转型,还可以这样:

1  ti.content = reader.GetSqlBinary( 2 ).Value;

        有了byte[]的内容,要显示也比较简单,在Page_Load()方法中加两句话即可:

Response.ContentType = " image/jpeg " ;
Response.BinaryWrite(ti.content);

        这样就可以输出图像了,但是有一点要注意的是,如果想对图像做一点调整(比如旋转,转换格式之类的),或者想知道图片的格式(是jpg 还是 gif),你也可以这样:

 1  // 同样,声明输出不是HTML而是image
 2  Response.ContentType = " image/jpeg " ;
 3 
 4  // 从byte[]得到一个image对象
 5  System.Drawing.Image bmap  =  Bitmap.FromStream( new  MemoryStream(ti.content));
 6  // 操作一下这个图像
 7  bmap.RotateFlip(RotateFlipType.Rotate180FlipY);
 8 
 9  // 输出到页面上
10  bmap.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
11 
12  // 释放image
13  bmap.Dispose();
14 

        当然,如何在asp中动态显示图像,我就不多说了。无非就是让<img src=指向一个aspx文件,然后在这个aspx文件中设置它的输出不是HTML而是image即可。

 

       

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值