文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>asp.net对数据库中图片的上传与读取 - asp.net 教程-

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

时间:2010-08-27  来源:星空3

一、向数据库添加图片
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="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层:(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();
}
排行榜 更多 +
盒子小镇2游戏手机版下载

盒子小镇2游戏手机版下载

冒险解谜 下载
世界盒子模组版下载最新版本

世界盒子模组版下载最新版本

模拟经营 下载
音乐搜索app最新版本下载

音乐搜索app最新版本下载

趣味娱乐 下载