方法简介:
保存图片
- 将图片将图片转换成byte[],并得到MIME类
注:
string mime = FileUpload1.PostedFile.ContentType;//获取MIME类型
byte[] data = FileUpload1.FileBytes;//转换成byte[],在此方法有很多,不再一一列举
- 以参数化形式(参数化SQL语句或者存储过程)保存到数据库
注:
string sql = "insert into FileList(FileData,Mime)values(@FileData,@Mime)";
SqlParameter[] parameters = new SqlParameter[4];
parameters[0] = new SqlParameter("@FileData", SqlDbType.Image, int.MaxValue);
parameters[0].Value = data ;parameters[1] = new SqlParameter("@Mime", SqlDbType.NVarChar, 50);
parameters[1].Value = mime ;
显示图片
- 将字段数据转换成byte[] //把image字段强制转换即可
- 以byte[]构造MemoryStream
- 以MemoryStream在内存中构造图象
显示图片中2、3步的代码实例如下:
//data 为数据库中转换过来的byte[]数组
//mime为string类型的MIME类型
//在得到byte[]和MIME类形后
Response.Clear();//清空所有输出
Response.ContentType = mime;//设置MIME为图象对应的MIME
//因为不存在直接将byte[]转换成图象的方法
//所以利用byte[]来构建内存流对象
MemoryStream memoryStream = new MemoryStream(data);
//利用流对象构建Bitmap对象
Bitmap image = new System.Drawing.Bitmap(memoryStream);
//将Bitmap保存到Response对象的输出流当中
image.Save(Response.OutputStream, ImageFormat.Jpeg);
image.Dispose();//释放Bitmap对象
Response.End();
注:
可把用dyte[]转换成图片的代码单独放在一个aspx页面的后台代码块中,在需要显示图片的位置设置<img>元素的src属性指向该byte[]成图片的页面即可