我也是菜鸟,以下内容都是用自己的话说的,看不懂的地方敬请回询
①存图片
存图片是先把图片先转换为比特流(即byte[]),再将比特流写入数据库的image类型字段中。
②取图片
取图片则是一个逆过程,载体是网页中的图片,只需将图片的路径指向一个一般处理程序,并调用这个一般处理过程将从数据库读取到的比特流(或称图片流)输出到载体图片上。
以下是代码:
一、取图片:
添加一般处理程序ReadImage.ashx,把网页中图片的路径指向这个一般处理程序
程序代码:
using System;
using System.Web;
using System.Data;
using System.Text;
public class ReadImage : IHttpHandler {
public void ProcessRequest (HttpContext context)
{
LoadImage(context);
}
//从数据库的image类型字段中读取图片流
private void LoadImage(HttpContext contextImg)
{
byte[] ImageValue=new byte[contextImg.Request.ContentLength];
//这边写读取数据库数据的代码
//把数据赋值给ImageValue
contextImg.Response.ContentType = "image/pjpeg";
contextImg.Response.BinaryWrite(ImageValue);
}
public bool IsReusable {
get {
return false;
}
}
}
二、存图片
asp.net中使用FileUpload控件上传图片
以下是代码:
HttpPostedFile UploadImg= FileUpload1.PostedFile;
string FileName = UploadImg.FileName;
string attachType = FileName.Substring(FileName.LastIndexOf('.') + 1);
Stream imgdatastream = UploadImg.InputStream;
int imgdatalen = UploadImg.ContentLength;
string imgtype = UploadImg.ContentType;
byte[] imgdata = new byte[imgdatalen];
if (!String.IsNullOrEmpty(FileName))
{
if (FileTypeCheck(UploadImg, FileName, ArrFileType, RealFileType))
{
if (UploadImg.ContentLength < 512000)
{
imgdatastream.Read(imgdata, 0, imgdatalen);
}
}
}
//imgdata便是读取到的图片流,最后就是把图片流写入数据库了
//例如:Model.ImageValue=imgdata;
你说你是初学者,那就补充一下吧:
定义类:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
public class Model
{
public Model()
{ }
private byte[] _imagevalue;
private int _id;
public byte[] ImageValue
{
set { _imagevalue = value; }
get { return _imagevalue; }
}
public int ID
{
set { _id = value; }
get { return _id; }
}
}
public class DataOperator{
public DataOperator()
{ }
/// <summary>
/// 增加一条数据
/// </summary>
public int Add(Model model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into Model(");
strSql.Append("ImageValue");
strSql.Append(")");
strSql.Append(" values (@ImageValue)");
SqlParameter[] parameters = {
new SqlParameter("@ImageValue",SqlDbType.Image)
};
parameters[0].Value = model.ImageValue;
DbHelperSQL.GetSingle(strSql.ToString(), parameters);
}
/// <summary>
/// 得到一个对象实体
/// </summary>
public Model GetModel(int id)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select ");
strSql.Append("ImageValue");
strSql.Append(" from Model ");
strSql.Append(" where id=" + id.ToString());
Model model = new Model();
DataSet ds = DbHelperSQL.Query(strSql.ToString());
if (ds.Tables[0].Rows.Count > 0)
{
if (ds.Tables[0].Rows[0]["ImageValue"].ToString() != "")
{
model.ImageValue = (byte[])ds.Tables[0].Rows[0]["ImageValue"];
}
return model;
}
else
{
return null;
}
}
}