第一種方式? ?文件夾與數據庫配合
/// <summary>/// 上傳圖片/// </summary>/// <param name="FUSShopURL">FileUpload對象</param>/// <param name="UpladURL">圖片要放到的目錄名稱</param>/// <returns>如果FileUpload不為空則返回上傳后的圖片位置,否則返回為空字符</returns>public static string uploadImage(FileUpload FUSShopURL, string UpladURL){if (FUSShopURL.HasFile){//獲取當前的時間,一當作圖片的名字string fileName = DateTime.Now.ToString("yyyyMMddhhmmss") + DateTime.Now.Millisecond.ToString();//獲取圖片的擴展名string Extent = System.IO.Path.GetExtension(FUSShopURL.PostedFile.FileName);//重命名圖片fileName += Extent;//設置上傳圖片保存的文件夾string dir = System.Web.HttpContext.Current.Server.MapPath(UpladURL);//指定圖片的路徑及文件名string path = dir + "\\" + fileName;//把上傳得圖片保存到指定的文件加中 FUSShopURL.PostedFile.SaveAs(path);return fileName;}else{return "";}}
第二種方式? ? 直接把圖片的Base64String碼進行存取
//選擇圖片private void button1_Click(object sender, EventArgs e){OpenFileDialog openfile = new OpenFileDialog();openfile.Title = "請選擇客戶端longin的圖片";openfile.Filter = "Login圖片(*.jpg;*.bmp;*png)|*.jpeg;*.jpg;*.bmp;*.png|AllFiles(*.*)|*.*";if (DialogResult.OK == openfile.ShowDialog()){try{Bitmap bmp = new Bitmap(openfile.FileName);pictureBox1.Image = bmp;pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;MemoryStream ms = new MemoryStream();bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);byte[] arr = new byte[ms.Length];ms.Position = 0;ms.Read(arr, 0, (int)ms.Length);ms.Close();//直接返這個值放到數據就行了pic = Convert.ToBase64String(arr);}catch { }}}
讀取的方法也很簡單, pic就是我們得到的圖片字符串只要我們存儲到數據庫里,從下面的方法里讀取就可以了
//加載圖片private void Form1_Load(object sender, EventArgs e){try{// pic=........這一句換成從數據庫里讀取就可以了//判斷是否為空,為空時的不執行if (!string.IsNullOrEmpty(pic)){//直接返Base64碼轉成數組byte[] imageBytes = Convert.FromBase64String(pic);//讀入MemoryStream對象MemoryStream memoryStream = new MemoryStream(imageBytes, 0, imageBytes.Length);memoryStream.Write(imageBytes, 0, imageBytes.Length);//轉成圖片Image image = Image.FromStream(memoryStream);//memoryStream.Close();//不要加上這一句否則就不對了// 將圖片放置在 PictureBox 中this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;this.pictureBox1.Image = image;}}catch { }}
第三種方式? ?讀成二進制后進行存取
private void button1_Click(object sender, EventArgs e){OpenFileDialog openfile = new OpenFileDialog();openfile.Title = "請選擇客戶端longin的圖片";openfile.Filter = "Login圖片(*.jpg;*.bmp;*png)|*.jpeg;*.jpg;*.bmp;*.png|AllFiles(*.*)|*.*";if (DialogResult.OK == openfile.ShowDialog()){try{//讀成二進制byte[] bytes = File.ReadAllBytes(openfile.FileName);//直接返這個存儲到數據就行了cmd.Parameters.Add("@image", SqlDbType.Image).Value = bytes;//輸出二進制 在這里把數據中取到的值放在這里byte[] bytes=(byte[])model.image;pictureBox1.Image = System.Drawing.Image.FromStream(new MemoryStream(bytes));this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;// 如果保存成文件:File.WriteAllBytes(@"d:\text.jpg", bytes);}catch { }}}
?