有一个员工表Employee,需要保存员工照片(Photo)到数据库(sql server)上。员工照片对应的字段是varbinary(max),也就是要存成二进制文件类型(这和以前讨巧地存图片文件路径就不相同了),默认可以为空。下面说说主要实现思路: 1、存取图片 (1)、将图片文件转换为二进制并直接存进sql server //UploadHelper.cs /// /// 将图片转化为长二进制 /// /// "photopath"> /// public static Byte[] SetImgToByte(string imgPath) { FileStream file = new FileStream(imgPath, FileMode.Open, FileAccess.Read); Byte[] byteData = new Byte[file.Length]; file.Read(byteData, 0, byteData.Length); file.Close(); return byteData; } /// /// 将转换成二进制码的图片保存到数据库中 /// public static bool SaveEmployeeImg2Db(Employee model, string path) { try { Byte[] imgBytes = SetImgToByte(path); model.Photo = imgBytes; bool flag=EmployeeService.SaveEmployeePhoto(model); //EmployeeService 是公司内部的库调用,插入或者更新照片,这里不透露细节 return flag; } catch (Exception ex) { throw ex; } } (2)、在网页中上传图片 /// /// 上传图片 /// /// "sender"> /// "e"> protected void btnUpload_Click(object sender, EventArgs e) { string serverPath = Server.MapPath("~/images/"); if (this.fuPhoto.HasFile) //fuPhoto 是 fileupload 控件 { string fileName = this.fuPhoto.PostedFile.FileName; FileInfo fi = new FileInfo(fileName); string mimeType = this.fuPhoto.PostedFile.ContentType.ToLower(); if (mimeType.IndexOf("image") < 0) { //("上传的照片格式不对"); } else if(fi.Length > 2* 1024 * 1024) { //图片大于2M,重新处理 } else { string saveFilePath = serverPath + DateTime.Now.ToString("yyyyMMddHHmmss") + fileName; try { //先存图片到服务器 this.fuPhoto.PostedFile.SaveAs(saveFilePath); //转成二进制 Employee model = new Employee(int.Parse(id)); //id 是EmployeeId,这里是模拟字段 bool flag = UploadHelper.SaveEmployeeImg2Db(model, saveFilePath); } catch { //("照片上传失败"); } finally...