当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  asp.net对数据库中图片的上传与读取

 asp.net对数据库中图片的上传与读取

点击次数:28 次 发布日期:2008-11-26 10:29:23 作者:源代码网
源代码网推荐      Posted on 2007-10-26 10:28 无锋不起浪 阅读(539) 评论(1) 编辑 收藏 所属分类: Asp.net
源代码网推荐  一、向数据库添加图片
源代码网推荐  1. UserInfo
源代码网推荐  #region 用户实体
源代码网推荐  public class UserInfo
源代码网推荐  {
源代码网推荐   #region 属性
源代码网推荐   #region 个人信息
源代码网推荐   private Int32 m_UserID;//用户ID
源代码网推荐   private String m_UserName; //用户名
源代码网推荐  
源代码网推荐   /// <summary>
源代码网推荐   /// 用户ID
源代码网推荐   /// </summary>
源代码网推荐   public Int32 UserID
源代码网推荐   {
源代码网推荐   get { return m_UserID; }
源代码网推荐   set { m_UserID = value; }
源代码网推荐   }
源代码网推荐   ///<summary>
源代码网推荐   ///用户登录时使用的名称
源代码网推荐   ///</summary>
源代码网推荐   public String UserName
源代码网推荐   {
源代码网推荐   get { return m_UserName; }
源代码网推荐   set { m_UserName = value; }
源代码网推荐   }
源代码网推荐   private Byte[] _Photo;
源代码网推荐   ///<summary>
源代码网推荐   ///照片
源代码网推荐   ///</summary>
源代码网推荐   public Byte[] Photo
源代码网推荐   {
源代码网推荐   get { return _Photo; }
源代码网推荐   set { _Photo = value; }
源代码网推荐   }
源代码网推荐   private string _ImageType;
源代码网推荐   ///<summary>
源代码网推荐   ///照片格式
源代码网推荐   ///</summary>
源代码网推荐   public String ImageType
源代码网推荐   {
源代码网推荐   get { return _ImageType; }
源代码网推荐   set { _ImageType = value; }
源代码网推荐   }
源代码网推荐   #endregion
源代码网推荐   #endregion
源代码网推荐  
源代码网推荐   #region 构造函数
源代码网推荐   /// <summary>
源代码网推荐   /// 构造函数
源代码网推荐   /// </summary>
源代码网推荐   public UserInfo()
源代码网推荐   { }
源代码网推荐   /// <summary>
源代码网推荐   /// 设置用户信息
源代码网推荐   /// </summary>
源代码网推荐   public UserInfo(DataRow dataRow)
源代码网推荐   {
源代码网推荐   m_UserID = (int)dataRow["UserID"];
源代码网推荐   m_UserName = (string)dataRow["UserName"];
源代码网推荐   _ImageType = dataRow["ImageType"] == System.DBNull.Value ? string.Empty : dataRow["ImageType"].ToString();
源代码网推荐   _Photo = dataRow["Photo"] == System.DBNull.Value ? new byte[0] : (byte[])dataRow["Photo"];
源代码网推荐  
源代码网推荐   }
源代码网推荐   #endregion
源代码网推荐  }
源代码网推荐  #endregion
源代码网推荐  #region 用户实体
源代码网推荐  public class UserInfo
源代码网推荐  {
源代码网推荐   #region 属性-----------------------------------------------------------
源代码网推荐   #region 个人信息
源代码网推荐   private Int32 m_UserID;//用户ID
源代码网推荐   private String m_UserName; //用户名
源代码网推荐  
源代码网推荐   /// <summary>
源代码网推荐   /// 用户ID
源代码网推荐   /// </summary>
源代码网推荐   public Int32 UserID
源代码网推荐   {
源代码网推荐   get { return m_UserID; }
源代码网推荐   set { m_UserID = value; }
源代码网推荐   }
源代码网推荐   ///<summary>
源代码网推荐   ///用户登录时使用的名称
源代码网推荐   ///</summary>
源代码网推荐   public String UserName
源代码网推荐   {
源代码网推荐   get { return m_UserName; }
源代码网推荐   set { m_UserName = value; }
源代码网推荐   }
源代码网推荐   private Byte[] _Photo;
源代码网推荐   ///<summary>
源代码网推荐   ///照片
源代码网推荐   ///</summary>
源代码网推荐   public Byte[] Photo
源代码网推荐   {
源代码网推荐   get { return _Photo; }
源代码网推荐   set { _Photo = value; }
源代码网推荐   }
源代码网推荐   private string _ImageType;
源代码网推荐   ///<summary>
源代码网推荐   ///照片格式
源代码网推荐   ///</summary>
源代码网推荐   public String ImageType
源代码网推荐   {
源代码网推荐   get { return _ImageType; }
源代码网推荐   set { _ImageType = value; }
源代码网推荐   }
源代码网推荐   #endregion
源代码网推荐   #endregion
源代码网推荐   #region 构造函数-------------------------------------------------------
源代码网推荐   /// <summary>
源代码网推荐   /// 构造函数
源代码网推荐   /// </summary>
源代码网推荐   public UserInfo()
源代码网推荐   { }
源代码网推荐   /// <summary>
源代码网推荐   /// 设置用户信息
源代码网推荐   /// </summary>
源代码网推荐   public UserInfo(DataRow dataRow)
源代码网推荐   {
源代码网推荐   m_UserID = (int)dataRow["UserID"];
源代码网推荐   m_UserName = (string)dataRow["UserName"];
源代码网推荐   _ImageType = dataRow["ImageType"] == System.DBNull.Value ? string.Empty : dataRow["ImageType"].ToString();
源代码网推荐   _Photo = dataRow["Photo"] == System.DBNull.Value ? new byte[0] : (byte[])dataRow["Photo"];
源代码网推荐  
源代码网推荐   }
源代码网推荐   #endregion
源代码网推荐  }
源代码网推荐  #endregion
源代码网推荐  2. 数据层 Framework.Sys.DAL.User:
源代码网推荐  /// <summary>
源代码网推荐  /// 添加照片
源代码网推荐  /// </summary>
源代码网推荐  public bool AddPhoto(UserInfo currentUser)
源代码网推荐  {
源代码网推荐   string sql = "update Sys_Users set [Photo]=@Photo,[ImageType]=@ImageType where [UserID]=@UserID";
源代码网推荐  
源代码网推荐   SqlParameter[] parameters ={
源代码网推荐   new SqlParameter("@UserID", SqlDbType.Int, 4),
源代码网推荐   new SqlParameter("@Photo", SqlDbType.Image, 16), //注意参数类型
源代码网推荐   new SqlParameter("@ImageType", SqlDbType.NVarChar, 50)};
源代码网推荐   parameters[0].Value = currentUser.UserID;
源代码网推荐   parameters[1].Value = currentUser.Photo;
源代码网推荐   parameters[2].Value = currentUser.ImageType;
源代码网推荐  
源代码网推荐   int rowsAffected = 0;
源代码网推荐   RunSQL(sql, ref rowsAffected, parameters);
源代码网推荐   return (rowsAffected > 0);
源代码网推荐  }
源代码网推荐  3. 业务层 Framework.Sys.BLL.User:
源代码网推荐  /// <summary>
源代码网推荐  /// 添加照片
源代码网推荐  /// </summary>
源代码网推荐  public bool AddPhoto(UserInfo currentUser)
源代码网推荐  {
源代码网推荐   return dataUser.AddPhoto(currentUser);
源代码网推荐  }
源代码网推荐  4. UI层:(UserPhotoAdd.aspx)
源代码网推荐  (1)前台代码:(注意img 的src 属性设为显示图片的页面)
源代码网推荐  <img src="http://www.zzchn.com/edu/20080727/UserPhoto.aspx" height="200" width="300" />
源代码网推荐  <br />
源代码网推荐  <asp:FileUpload ID="upPhoto" runat="server" />
源代码网推荐  <asp:Button Text=" 添 加 " runat="server" ID="btnAddPhoto" OnClick="btnAddPhoto_Click" />
源代码网推荐  (2)后台代码:
源代码网推荐  Framework.Sys.BLL.User myBiz = new Framework.Sys.BLL.User();
源代码网推荐  protected void Page_Load(object sender, EventArgs e)
源代码网推荐  {
源代码网推荐  
源代码网推荐  }
源代码网推荐  protected void btnAddPhoto_Click(object sender, EventArgs e)
源代码网推荐  {
源代码网推荐   Response.Clear();
源代码网推荐   int imgSize = upPhoto.PostedFile.ContentLength;//图片的大小
源代码网推荐   string imgType = upPhoto.PostedFile.ContentType;//图片类型
源代码网推荐   Stream imgStream = upPhoto.PostedFile.InputStream;//读取图片
源代码网推荐  
源代码网推荐   Byte[] buff = new Byte[imgSize];
源代码网推荐   //方法1
源代码网推荐   imgStream.Read(buff, 0, imgSize);
源代码网推荐   //方法2
源代码网推荐   //BinaryReader rd = new BinaryReader(imgStream);
源代码网推荐   //rd.Read(buff, 0, imgSize);
源代码网推荐  
源代码网推荐   UserInfo user = new UserInfo();
源代码网推荐   user.UserID = 9;
源代码网推荐   user.Photo = buff;//***
源代码网推荐   user.ImageType = imgType;
源代码网推荐  
源代码网推荐   if (myBiz.AddPhoto(user))
源代码网推荐   base.WriteLine("添加成功");
源代码网推荐   else
源代码网推荐   base.WriteLine("添加失败");
源代码网推荐   Response.End();
源代码网推荐  }
源代码网推荐  二、从数据库读取图片
源代码网推荐  1. 数据层:(Framework.Sys.DAL.User)
源代码网推荐  public DataRow Retrieve(int userID)
源代码网推荐  {
源代码网推荐   string sql = "SELECT Sys_Users.* WHERE UserID ={0}";
源代码网推荐   sql = string.Format(sql, userID);
源代码网推荐   using (DataSet users = RunSQL(sql, "Users"))
源代码网推荐   {
源代码网推荐   return users.Tables[0].Rows[0];
源代码网推荐   }
源代码网推荐  }
源代码网推荐  2. 业务层:(Framework.Sys.BLL.User)
源代码网推荐  public UserInfo Retrieve(int userID)
源代码网推荐  {
源代码网推荐   DataRow userRow = dataUser.Retrieve(userID);
源代码网推荐   return new UserInfo(userRow);
源代码网推荐  }
源代码网推荐  3. UI层:(http://www.zzchn.com/edu/20080727/UserPhoto.aspx)
源代码网推荐  (1)前台代码:无
源代码网推荐  (2)后台代码:
源代码网推荐  Framework.Sys.BLL.User myBiz = new Framework.Sys.BLL.User();
源代码网推荐  protected void Page_Load(object sender, EventArgs e)
源代码网推荐  {
源代码网推荐   HttpContext.Current.Response.ClearContent();
源代码网推荐   try
源代码网推荐   {
源代码网推荐   UserInfo user = myBiz.Retrieve(9);
源代码网推荐   Response.ContentType = user.ImageType;
源代码网推荐   Response.BinaryWrite(user.Photo);
源代码网推荐   }
源代码网推荐   catch (Exception exc)
源代码网推荐   {
源代码网推荐   throw new Framework.AppException(exc.Message);
源代码网推荐   }
源代码网推荐   HttpContext.Current.Response.End();
源代码网推荐  }  做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华