2014-09-04 69 views
0

所以這裏是場景。我有一個畫布,我通過將數據:image/png; base64轉換爲數據庫中的圖像類型

var image = canvas.toDataURL("image/png"); 

獲得的數據以及我將會把數據轉換成文本區域,所以我可以將其插入到數據庫

document.getElementById("TextArea1").textContent = image 

如果我將插入文本域裏面的數據,「數據:圖像/ PNG; BASE64,iVBORw0KGgoAAAAN ......」到數據庫中,它說,

Operand type clash: nvarchar(max) is incompatible with image. 

所以,我我想要的,我需要做的就是將「數據轉換:圖像/ PNG; BASE64,iVBORw0KGgoAAAAN .. 。「插入到數據庫中時變成」0x89504E470D0A1A0A ...「。提前致謝!

回答

1

您的圖像是Base64格式,它是一個字符串,您需要先將其轉換爲字節數組以便將其保存到數據庫中。事情是這樣的:

Dim base64String = "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" 

Dim con As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Temp\Database1.mdf;Integrated Security=True;User Instance=True") 
Dim sql As String = "INSERT INTO MyTable VALUES(@Image)" 
Dim cmd As New SqlCommand(sql, con) 
Dim imageBytes As Byte() = Convert.FromBase64String(base64String) 
Dim p As New SqlParameter("@Image", SqlDbType.Image) 
p.Value = imageBytes 
cmd.Parameters.Add(p) 
cmd.ExecuteNonQuery() 

更多exmaples這裏加載和保存圖像到數據庫:

http://www.codeproject.com/Articles/437937/Save-and-Retrieve-Image-from-a-SQL-Server-Database

+0

我正在使用asp.net先生,即時對不起,我忘了把它放在標籤。我有一個錯誤。 「fromstream不是system.web.ui.webcontrols.image的成員」 – Dale 2014-09-04 08:10:01

+1

用更全面的解決方案更新了答案 – 2014-09-04 08:14:43

+0

我認爲它現在正在運行!但我有一個問題。我的數據就像「data:image/png; base64,iVBORw0KGgoAAAA ...」但我只需要「iVBORw0KGgoAAAA ...」部分。我該怎麼辦? – Dale 2014-09-04 08:50:39

0

您正在DB中輸入文本,而您的db字段類型是圖片,因此您會收到錯誤消息。如果可能的話,改變你的db字段類型爲varchar,它將起作用。

+0

,因爲我已經有很多數據是在數據庫領域這是不可能的。 – Dale 2014-09-04 07:39:31