关于ASP.NET中图片上传到MSSQL数据库以及读取的方法
2008-03-04 10:03
886 查看
这篇文章非常非常简单,只是一个基本代码的笔记而已。所以,已经知道方法的同学可以出去了。
地球人都知道我们为什么要把文件上传到数据库里,所以原因我也懒得说。
预备工作:
在数据库方面,我们需要有一个字段,类型为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即可。
地球人都知道我们为什么要把文件上传到数据库里,所以原因我也懒得说。
预备工作:
在数据库方面,我们需要有一个字段,类型为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即可。
相关文章推荐
- Asp.net中图片存储数据库以及页面读取显示通用方法详解-附源码下载
- Asp.net中图片存储数据库以及页面读取显示通用方法详解
- Asp.net 中图片存储数据库以及页面读取显示通用方法详解-附源码下载
- Asp.net 中图片存储数据库以及页面读取显示通用方法详解
- Asp.net中图片存储数据库以及页面读取显示通用方法详解
- Asp.net中图片存储数据库以及页面读取显示通用方法详解
- Asp.net中图片存储数据库以及页面读取显示通用方法详解-附源码下载
- ASP.NET 上传图片至数据库并读取图片显示
- asp.net对数据库中图片的上传与读取
- ASP.NET 上传图片至数据库并读取图片显示
- ASP.NET 上传图片至数据库并读取图片显示--二进制流方式
- ASP.NET实现从数据库中读取图片的方法
- 将图片插入数据库并使用asp.net读取出来的正确方法
- 将图片插入数据库并使用asp.net读取出来的正确方法
- asp.net对数据库中图片的上传与读取
- ASP.NET 上传图片至数据库并读取图片显示
- 将图片插入数据库并使用asp.net读取出来的正确方法
- 实现ASP.NET数据库图片上传与读取的功能
- asp.net对数据库中图片的上传与读取
- ASP.NET中常用功能代码总结(上传图片到数据库,从数据库中读取图片)