visual studio网站开发,上海最好的网站建设公司,悦阁网站建设,企业网址搭建实现功能如下图#xff1a;注明#xff1a;此文使用的是DevExpress控件#xff0c;winform 原生控件也是一样使用方法。1.点击选择图片按钮#xff0c;功能为通过对话框选择要上传的文件#xff0c;并将该文件在下面的PictureEdit中显示出来。具体代码如下#xff1a;pri…实现功能如下图注明此文使用的是DevExpress控件winform 原生控件也是一样使用方法。1.点击选择图片按钮功能为通过对话框选择要上传的文件并将该文件在下面的PictureEdit中显示出来。具体代码如下private void btnChoosePic_Click(object sender, EventArgs e){ShowPic(pictureEdit1);}/// /// 选择图片/// /// public static void ShowPic(PictureEdit picEdit){OpenFileDialog ofd new OpenFileDialog();ofd.InitialDirectory C:\;ofd.Filter Image Files(*.JPG;*.PNG;*.jpeg;*.GIF;*.BMP)|*.JPG;*.PNG;*.GIF;*.BMP;*.jpeg|All files(*.*)|*.*;ofd.RestoreDirectory true;if (ofd.ShowDialog() DialogResult.OK){PicAddress ofd.FileName;Image imge Image.FromFile(PicAddress);Bitmap bm new Bitmap(imge, picEdit.Width, picEdit.Height);picEdit.Image bm;}}ShowPic()方法为静态方法可以直接调用其中的PicAddress变量为静态全局变量用于记录要上传文件的文件地址。PictureEdit显示图片的方式是通过PictureEdit的image属性设定的将图片转成Bitmap格式位图文件是最简单的图片格式。2.上传图片该按钮的功能是将选定的图片上传到数据库中具体的实现代码如下/// /// 上传图片/// /// /// private void btnUploadPic_Click(object sender, EventArgs e){if (PicAddress ! null){if (PicType.Equals(教师)){var sqlSearch $select count(*) from studentmanager.picture where PicTypeId {TeacherId}and PicType{PicType};var dsSearch _db.GetResult(sqlSearch);if (dsSearch.Tables[0].Rows[0][0].ToString().Equals(0)) //没有重复的则进行新增插入操作{byte[] pic CommonFunction.GetContent(PicAddress);var result _db.SavePictureToDB(pic, PicAddress, PicType, TeacherId);if (result 0){CommonFunction.MessageShow(头像添加成功, 提示, OK, Information);DialogResult DialogResult.OK;}else{CommonFunction.MessageShow(头像添加失败);}}else{//更新头像if (PicAddress.Equals(String.Empty)){CommonFunction.MessageShow(没有重新选择图片进行更新);return;}byte[] pic CommonFunction.GetContent(PicAddress);var result _db.UpdatePictureToDb(pic, PicAddress, PicType, TeacherId);if (result 0){CommonFunction.MessageShow(头像更新成功, 提示, OK, Information);DialogResult DialogResult.OK;}else{CommonFunction.MessageShow(头像更新失败);}}}else if(PicType.Equals(学生)){var sqlSearch $select count(*) from studentmanager.picture where PicTypeId {StudentId}and PicType{PicType};var dsSearch _db.GetResult(sqlSearch);if (dsSearch.Tables[0].Rows[0][0].ToString().Equals(0)) //没有重复的则进行新增插入操作{byte[] pic CommonFunction.GetContent(PicAddress);var result _db.SavePictureToDB(pic, PicAddress, PicType, StudentId);if (result 0){CommonFunction.MessageShow(头像添加成功, 提示, OK, Information);DialogResult DialogResult.OK;}else{CommonFunction.MessageShow(头像添加失败);}}else{//更新头像if (PicAddress.Equals(String.Empty)){CommonFunction.MessageShow(没有重新选择图片进行更新);return;}byte[] pic CommonFunction.GetContent(PicAddress);var result _db.UpdatePictureToDb(pic, PicAddress, PicType, StudentId);if (result 0){CommonFunction.MessageShow(头像更新成功, 提示, OK, Information);DialogResult DialogResult.OK;}else{CommonFunction.MessageShow(头像更新失败);}}}}else{CommonFunction.MessageShow(请先选择图片, 提示, OK, Error);}}上传的过程大概就是根据文件地址将对应文件转换成数据流二进制格式–编写对应的SQL语句–执行该SQL语句将图片添加到数据库中。上面代码中SavePictureToDB方法代码如下/// /// 保存图片到数据库/// /// /// /// /// /// /// public int SavePictureToDB(byte[] imageByte,string Picturename,string PicType,int PicTypeId){var result 0;try{if (imageByte ! null imageByte.Length ! 0){using (var conn new MySqlConnection()){conn.ConnectionString ConnectionString;conn.Open();var insertStr INSERT INTO studentmanager.picture(Picturename,PicType,PicTypeId,imageByte)VALUES(Picturename,PicType,PicTypeId,imageByte);;var comm new MySqlCommand();comm.Connection conn;comm.CommandText insertStr;comm.CommandType CommandType.Text;//设置数据库字段类型MediumBlob的值为图片字节数组imageBytecomm.Parameters.Add(new MySqlParameter(imageByte, MySqlDbType.MediumBlob)).Value imageByte;comm.Parameters.Add(new MySqlParameter(Picturename, MySqlDbType.VarChar)).Value Picturename;comm.Parameters.Add(new MySqlParameter(PicType, MySqlDbType.VarChar)).Value PicType;comm.Parameters.Add(new MySqlParameter(PicTypeId, MySqlDbType.Int32)).Value PicTypeId;//execute sqlresult comm.ExecuteNonQuery();comm.Dispose();conn.Close();conn.Dispose();}}}catch (Exception){// throw ex;}return result;}3.加载图片显示到PictureEdit/// /// 窗口加载/// /// /// private void HeadManager_Load(object sender, EventArgs e){LoadImage(PicType, PicType.Equals(教师) ? TeacherId : StudentId);}/// /// 获取图片/// /// /// private void LoadImage(string picType, int picTypeid){try{var imageBytes _db.GetImage(picType, picTypeid);var image CommonFunction.GetImageByBytes(imageBytes);Bitmap bm new Bitmap(image, pictureEdit1.Width, pictureEdit1.Height);pictureEdit1.Image bm;}catch (Exception){pictureEdit1.Image Resource.DefaultUser;}}4.用到的公共方法/// /// 转换为Byte[]/// /// /// public static byte[] GetContent(string filepath)//将指定路径下的文件转换成二进制代码用于传输到数据库{FileStream fs new FileStream(filepath, FileMode.Open, FileAccess.Read);byte[] byData new byte[fs.Length];//新建用于保存文件流的字节数组fs.Read(byData, 0, byData.Length);//读取文件流fs.Close();return byData;}/// /// 读取byte[]并转化为图片/// /// byte[]/// Imagepublic static Image GetImageByBytes(byte[] bytes){Image photo;using (MemoryStream ms new MemoryStream(bytes)){ms.Write(bytes, 0, bytes.Length);photo Image.FromStream(ms, true);ms.Dispose();ms.Close();}return photo;}