将数据:image / png; base64转换为数据库中的图像类型

时间:2014-09-04 05:10:31

标签: javascript asp.net vb.net canvas base64

所以这是场景。我有一个画布,我通过

获取数据
var image = canvas.toDataURL("image/png");

我会将数据放入TextArea,以便将其插入数据库

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

如果我要在textarea中插入数据,那么" data:image / png; base64,iVBORw0KGgoAAAAN ......"进入数据库,它说

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

所以,我想要的是什么,我需要做的是转换"数据:image / png; base64,iVBORw0KGgoAAAAN ......"类似于" 0x89504E470D0A1A0A ..."将其插入数据库时​​。提前谢谢!

2 个答案:

答案 0 :(得分: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()

此处有关于将图像加载并保存到数据库的更多详细信息:

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

答案 1 :(得分:0)

您正在DB中输入文本,并且您的数据库字段类型是图像,因此您收到错误。如果可能,那么将db字段类型更改为varchar它将起作用。