我正在尝试将数据uri图像从javascript发布到后端asp.net webapi。但是,它给了我input is not a valid Base-64 string
错误。现在,我理解这可能是由于数据uri包含的“data:image / png; base64”部分。
现在,即使我从数据uri中删除此部分并仅将其余字符串发送到服务器,如何在服务器上存储Base-64字符串?
此外,如何从webapi中将此数据作为图像检索?
注意:图像的大小将小于200kB,因此将在sql server中存储为varbinary(Max)。
答案 0 :(得分:1)
问题是您应该将图像转换为byte []并将其作为varbinary存储在服务器中
byte []arr = new byte[image1.ContentLength];
image1.InputStream.Read(arr, 0, image1.ContentLength);
检索时,应将varbinary数据转换为base64字符串,将64字符串转换为图像
string imageBase64Data = Convert.ToBase64String(img);
上面的代码重要部分将varbinary转换为base64string。它应该以适当的格式显示图像。以下代码执行的操作
string imageDataURL = string.Format("data:image/png;base64,{0}", asd);
Session["Photo"] = imageDataURL;
现在您可以查看图片了
答案 1 :(得分:0)
将客户端中的图像发布到for字符串中,不指定类型。在您的操作中,您可以通过以下方式获取图像:
var bytes = Convert.FromBase64String(yourStringHere);
using (var ms = new MemoryStream(bytes))
{
image = Image.FromStream(ms);
}