关闭

上传下载保存到数据库的image字段中的文件

588人阅读 评论(0) 收藏 举报
Asp.Net在SqlServer中的图片存取技术    
  在使用asp.net将图片上传并存入SqlServer中,然后从SqlServer中读取并显示出来    
   
  一,上传并存入SqlServer    
    数据库结构    
      create   table   test    
      {    
            id   identity(1,1),    
            FImage   image    
      }    
      相关的存储过程    
      Create   proc   UpdateImage    
      (    
            @UpdateImage   Image    
      )    
      As    
      Insert   Into   test(FImage)   values(@UpdateImage)    
      GO    
   
  在UpPhoto.aspx文件中添加如下:    
  <input   id="UpPhoto"   name="UpPhoto"   runat="server"   type="file">    
  <asp:Button   id="btnAdd"   name="btnAdd"   runat="server"   Text="上传"></asp:Button>    
   
  然后在后置代码文件UpPhoto.aspx.cs添加btnAdd按钮的单击事件处理代码:    
  private   void   btnAdd_Click(object   sender,   System.EventArgs   e)    
  {    
                  //获得图象并把图象转换为byte[]    
                  HttpPostedFile   upPhoto=UpPhoto.PostedFile;    
                  int   upPhotoLength=upPhoto.ContentLength;    
                  byte[]   PhotoArray=new   Byte[upPhotoLength];    
                  Stream   PhotoStream=upPhoto.InputStream;    
                  PhotoStream.Read(PhotoArray,0,upPhotoLength);    
   
                  //连接数据库    
                  SqlConnection   conn=new   SqlConnection();    
                  conn.ConnectionString="Data   Source=localhost;Database=test;User   Id=sa;Pwd=sa";    
   
                  SqlCommand   cmd=new   SqlCommand("UpdateImage",conn);    
                  cmd.CommandType=CommandType.StoredProcedure;    
   
                  cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);    
                  cmd.Parameters["@UpdateImage"].Value=PhotoArray;    
   
                  //如果你希望不使用存储过程来添加图片把上面四句代码改为:    
                  //string   strSql="Insert   into   test(FImage)   values(@FImage)";    
                  //SqlCommand   cmd=new   SqlCommand(strSql,conn);    
                  //cmd.Parameters.Add("@FImage",SqlDbType.Image);    
                  //cmd.Parameters["@FImage"].Value=PhotoArray;    
   
    conn.Open();    
    cmd.ExecuteNonQuery();    
    conn.Close();    
  }    
   
  二,从SqlServer中读取并显示出来    
  在需要显示图片的地方添加如下代码:    
  <asp:image   id="imgPhoto"   runat="server"   ImageUrl="ShowPhoto.aspx"></asp:image>    
   
  ShowPhoto.aspx主体代码:    
  private   void   Page_Load(object   sender,   System.EventArgs   e)    
  {    
            if(!Page.IsPostBack)    
            {    
                                  SqlConnection   conn=new   SqlConnection()    
                                  conn.ConnectionString="Data   Source=localhost;Database=test;User   Id=sa;Pwd=sa";    
                                   
                                  string   strSql="select   *   from   test   where   id=2";//这里假设获取id为2的图片    
                                  SqlCommand   cmd=new   SqlCommand()    
                                  reader.Read();    
                                  Response.ContentType="application/octet-stream";    
                                  Response.BinaryWrite((Byte[])reader["FImage"]);    
                                  Response.End();    
                                  reader.Close();    
            }    
  }     
   
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:401019次
    • 积分:7441
    • 等级:
    • 排名:第2925名
    • 原创:334篇
    • 转载:23篇
    • 译文:1篇
    • 评论:52条
    文章分类
    最新评论