黑道圣徒3完全版下载:将图片以二进制的形式添加到数据库中

来源:百度文库 编辑:九乡新闻网 时间:2024/05/01 13:25:19
  1. 1        ///
  2. 2        /// 上传文件同时并保存到数据中统一
  3. 3        /// Author:chenkai Date:2010年2月2日16:24:29
  4. 4        ///

  5. 5        protected void Button1_Click(object sender, EventArgs e)
  6. 6        {
  7. 7            //获取数据
  8. 8            string getname = this.markname.Text;
  9. 9            string getfile = this.FileUpload1.PostedFile.FileName;
  10. 10
  11. 11            //上传文件
  12. 12            string getlastpath = FileUploadCompant(this.FileUpload1);
  13. 13
  14. 14            //获取上传文件流
  15. 15              byte[] getbyte=new byte[this.FileUpload1.PostedFile.ContentLength];
  16. 16              Stream filestream = this.FileUpload1.PostedFile.InputStream;
  17. 17             
  18. 18            //读入数据
  19. 19              filestream.Read(getbyte, 0, this.FileUpload1.PostedFile.ContentLength);
  20. 20
  21. 21            //插入数据
  22. 22              #region
  23. 23              string sql = "insert into StoreImage(markname,markContent,markType,markSize,markLinkUrl) values(@name,@content,@type,@size,@link)";
  24. 24
  25. 25              SqlParameter[] getpars = new SqlParameter[5];
  26. 26              getpars[0] = new SqlParameter("@name", getname);
  27. 27              getpars[1] = new SqlParameter("@content", getbyte);//文件内容插入 This.Fileupload1.FileBytes同样可以直接转换成Byte数组不用转换
  28. 28              getpars[2] = new SqlParameter("@type", this.FileUpload1.PostedFile.ContentType);//保存文件类型
  29. 29              getpars[3] = new SqlParameter("@size", this.FileUpload1.PostedFile.ContentLength);//文件长度
  30. 30              getpars[4] = new SqlParameter("@link", getlastpath);
  31. 31
  32. 32              int getrescount = DBUtility.SqlHelper.ExecuteNonQuery(DBUtility.SqlHelper.connString,CommandType.Text,sql,getpars);
  33. 33
  34. 34              if (getrescount == 1)
  35. 35              {
  36. 36                  //添加成功
  37. 37                  ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "aler ", "alert( '图片记录成功添加到数据库'); ", true);
  38. 38              }
  39. 39              else
  40. 40              {
  41. 41                  //添加失败
  42. 42                  ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "aler ", "alert( '图片记录添加失败'); ", true);
  43. 43              }
  44. 44             
  45. 45              #endregion
  46. 46        }
复制代码这种获得图片转换成Byte【】字节数组通用,注意:其中在Fileupload控件中有个 GetBytes属性:This.Fileupload1.FileBytes可以直接把上传内容转换成字节数组而不必通过文件流来读取上传文件内容,这种方式更为快捷; 如上图片成功保存到数据库 接下来就是如何读取和显示控制的问题:

(3)数据库存储图片的读取和显示控制:

从数据库中读取到字节流后把图片直接写入页面并对显示进行控制 读取方法如下【该方法下载Button2_Click中】:
  1. 1        ///
  2. 2        /// 读取数据库中图片并显示出来
  3. 3          /// Author:chenkai Date:2010年2月2日16:48:18
  4. 4        ///

  5. 5        protected void Button2_Click(object sender, EventArgs e)
  6. 6        {
  7. 7            //获得数据
  8. 8            string sql = "select * from StoreImage order by id desc";
  9. 9
  10. 10              #region
  11. 11            using (SqlDataReader getreader = DBUtility.SqlHelper.ExecuteReader(DBUtility.SqlHelper.connString, CommandType.Text, sql))
  12. 12            {
  13. 13                if (getreader != null&&getreader.HasRows)
  14. 14                {
  15. 15                    //读取数据
  16. 16                    while (getreader.Read())
  17. 17                    {
  18. 18                        Response.ContentType = getreader["markType"] as string;
  19. 19                        Response.OutputStream.Write(getreader["markContent"] as byte[], 0, Convert.ToInt32(getreader["markSize"].ToString()));
  20. 20                        Response.End();
  21. 21                    }
  22. 22                }
  23. 23            }
  24. 24              #endregion
  25. 25        }
复制代码