• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
thankgoodness
博客园    首页    新随笔    联系   管理    订阅  订阅

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="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();
}
posted @ 2008-05-15 08:25  宇晨  阅读(270)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3