被人忽视的sqlserver数据类型--image
发布时间:2020-12-12 12:49:00 所属栏目:MsSql教程 来源:网络整理
导读:SqlServer 中有一种数据类型是 Image ,用来存储图片大小不超过 2g 的图片,将图片转换为二进制!缺点是占用了很大的数据存储空间。但是现对于之前的存储物理路径来说读取图片和存储图片方便了很多。 那么图片在 MVC 程序中是如何存入数据库,并从数据库显示
SqlServer中有一种数据类型是Image,用来存储图片大小不超过2g的图片,将图片转换为二进制!缺点是占用了很大的数据存储空间。但是现对于之前的存储物理路径来说读取图片和存储图片方便了很多。 那么图片在MVC程序中是如何存入数据库,并从数据库显示到页面上的呢: 下面是一个简单的小例子:
private string sqlconn = "Data Source=;Initial Catalog=Image;Persist Security Info=True;User ID=sa;Password=123456"; // // GET: /UpDownload/ public ActionResult Index() { return View(); } [HttpPost] [ValidateInput(false)] public bool Upload(HttpPostedFileBase[] fileToUpload) { string path = ""; try { //TODDO:读取任何地方的路径 foreach (HttpPostedFileBase file in fileToUpload) { path = System.IO.Path.Combine(Server.MapPath("~/"),"uploadimage" + System.IO.Path.GetFileName("00" + file.FileName.Substring(file.FileName.LastIndexOf(".")))); //写入数据库 file.SaveAs(path); //将需要存储的图片读取为数据流 FileStream fs = new FileStream(path,FileMode.Open,FileAccess.Read); Byte[] imgbtye = new byte[fs.Length]; fs.Read(imgbtye,Convert.ToInt32(fs.Length)); fs.Close(); using (SqlConnection conn = new SqlConnection(sqlconn)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "insert into T_TeacherImage(TeacherImage) values(@imgfile)"; SqlParameter par = new SqlParameter("@imgfile",SqlDbType.Image); par.Value = imgbtye; cmd.Parameters.Add(par); cmd.ExecuteNonQuery(); } } return true; } catch { return false; } } #region 读取文件直接显示到视图上 public void Read() { byte[] MyData = new byte[0]; using (SqlConnection conn = new SqlConnection(sqlconn)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "select TeacherImage from T_TeacherImage where id='1'"; SqlDataReader sdr = cmd.ExecuteReader(); sdr.Read(); MyData = (byte[])sdr["TeacherImage"]; Response.ContentType = "image/gif"; Response.BinaryWrite(MyData); conn.Close(); } } #endregion那么图片又是如何显示到网页上的呢,很简单:
if (xhr.readyState == 4 && xhr.status == 200) { $('#personimg').attr("src","http://localhost:55576/UpDownload/Read"); } 这个demo的实现环境是MVC,图片的获取路径是,当前服务主机地址/controller/action 怎么样,sqlserver为图片的读写,提供了很多方便之处吧!(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- [转] 如何取得一个表的所有字段名用逗号分割(SQLSERVER和O
- SQL Server 2016 无域群集配置 AlwaysON 可用性组图文教程
- 数据库设计 – 如何将IS-A关系映射到数据库?
- SQLServer对称密钥
- sql-server – 为什么SELECT查询会导致写入?
- SQL Server误区30日谈 第14天 清除日志后会将相关的LSN填零
- sql – subselect vs outer join
- VARBINARY(MAX)和IMAGE数据类型之间有很大的技术差异吗?
- 2012 使用XEvent sqlserver.blocked_process_report检测阻塞
- SQL2005把数据转换成insert语句的存储过程