要做一個上傳圖片的功能,我沒做過vb,遇到問題了不會解決,萬能的大神們求幫忙啊啊 啊,,,

要求是 先放一個可以編輯圖片的控制元件(因為要連接寫字板,寫字板上寫的字直接成為圖片顯示在編輯圖片的控制元件上),然后將該圖片以二進制的形式保存到資料庫中 。然后讀取出來顯示到界面上 ,,我現在放了一個button,點擊按鈕模擬上傳功能,在獲取完圖片路徑 '讀取圖片這步時報 未將物件參考到實列化 的錯誤,大神們幫我看看原因啊,還有有沒有什么可以編輯圖片的插件推薦,,感激不勝啊萬分感謝啊
報錯位置: Dim strPath As String = "D:\代理人系統\CLIENTCARGOBOOKING\Resources\88.jpg"Dim strPhotoPath As String = System.Web.HttpContext.Current.Server.MapPath(strPath) '讀取圖片 這步
以下 是頁面完整代碼:
Imports System.IO
Imports System.Text
Imports System.RunTime.Serialization.Formatters
Imports System.Data
Imports Cargo.Bus
Imports ime
Imports system.Math
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'圖片路徑
Dim strPath As String = "D:\代理人系統\CLIENTCARGOBOOKING\Resources\88.jpg"
Dim strPhotoPath As String = System.Web.HttpContext.Current.Server.MapPath(strPath) '讀取圖片
Dim fs As FileStream = New System.IO.FileStream(strPhotoPath, FileMode.Open, FileAccess.Read)
Dim br As BinaryReader = New BinaryReader(fs)
Dim photo() As Byte = br.ReadBytes(CType(fs.Length, Integer))
br.Close()
fs.Close()
Dim myConn As SqlClient.SqlConnection = New SqlClient.SqlConnection("Data Source=.;Initial Catalog=JM;User ID=sa;Password=123")
Dim strComm As String = " INSERT INTO zy(personName, personPhotoPath, personPhoto) "
strComm = (strComm + (" VALUES('wangwu', '" + (strPath + "', @photoBinary )")))
Dim myComm As SqlClient.SqlCommand = New SqlClient.SqlCommand(strComm, myConn)
myComm.Parameters.Add("@photoBinary", SqlDbType.Binary, photo.Length)
myComm.Parameters("@photoBinary").Value = photo
myConn.Open()
myComm.ExecuteNonQuery()
myConn.Close()
'3: .VB把檔案存入資料庫IMAGE欄位()
End Sub
End Class
只有40分,后面有分了在追加啊
uj5u.com熱心網友回復:
在VB的ADO物件中有一個Stream 物件是操作二進制資料的,在存盤圖片到資料庫,首先需要將圖片資料轉換成二進制資料,才能存盤在SQL資料庫的 image 欄位中,在讀取二進制資料后,使用 Stream 物件將二進制資料轉換為圖片,顯示在界面。你的這個程式是VB.NET的,雖然會一點,但沒有做過二進制資料轉換,VB60做過的不少。
uj5u.com熱心網友回復:
ado要2.5以上版本uj5u.com熱心網友回復:
給你一個VB60存盤圖片與讀取圖片的例子,供你參考,因為SQL語音不論是VB60還是VB2008應該是一樣的:1、宣告一個ADODB的Stream物件,在VB60是 Dim Mst As New ADODB.Stream
2、查找、讀取硬碟中的圖片,存盤路徑、擴展名
Private Sub Command1_Click() '使用檔案打開對話框查找硬碟圖片檔案
On Error GoTo Err
CommonDialog1.Filter = "JPG檔案(*.jpg)|*.jpg|GIF檔案(*.gif)|*.gif|BMP檔案(*.bmp)|*.bmp|PNG檔案(*.png)|*.png"
CommonDialog1.ShowOpen
Text2.Text = CommonDialog1.FileName '得到圖片的硬碟路徑+檔案名+擴展名
SSR = CommonDialog1.FileTitle '得到圖片的檔案名+擴展名
SSR = Right(SSR, 4) '得到圖片的擴展名,帶分隔符“.”
Command2.Enabled = True
Exit Sub
Err:
MsgBox Err.Description '點擊取消按鈕會產生錯誤,顯示錯誤內容
End Sub
3、存盤圖片到資料庫的特定資料表,連接資料庫陳述句略,你可以根據你的資料庫連接就可以
RS.Open "select * from 資料表名稱", cn, 3, 2
RS.AddNew
RS.Fields("名稱") = Text1.Text '存盤由自己設定的圖片名稱
Mst.Type = adTypeBinary
Mst.Open '打開Mst物件
If Text2.Text <> "" Then Mst.LoadFromFile Text2.Text 'Mst物件將Text2中的圖片內容轉換成二進制資料
RS.Fields("檔案") = Mst.Read '將二進制資料存盤在資料表的Image資料型別的欄位,這里的欄位名稱是【檔案】
RS.Fields("擴展名") = SSR '將圖片檔案的擴展名存盤在這個欄位
RS.Update
Mst.Close
RS.Close
4、讀取存盤在資料表中的二進制圖片資料
Image1.Picture = LoadPicture("")
RS.Open "select * from 資料表名稱 order By ID Desc", cn, 2, 2 'SQL陳述句根據你顯示的要求修改即可
Mst.Type = adTypeBinary
Mst.Open
Mst.Write RS.Fields("檔案") 'Mst物件讀取資料庫二進制資料
Mst.SaveToFile App.Path & "\doc\" & RS.Fields("名稱") & RS.Fields("擴展名"), adSaveCreateOverWrite
'Mst物件將轉換的圖片檔案存盤在doc目錄中,存盤的圖片是資料庫存盤的檔案名+擴展名
Image1.Picture = LoadPicture(App.Path & "\doc\" & RS.Fields("名稱") & RS.Fields("擴展名"))
'在 Image1 控制元件中將圖片顯示出來
Mst.Close
RS.Close不是特別復雜,按照這個例子,你應該能夠在VB2008中達到預期的要求。

這個圖片是在VB60中顯示的資料表存盤的圖片截圖。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/76795.html
