Javascript 如何从web api发布和获取数据uri图像?
我正在尝试将数据uri图像从javascript发布到后端asp.net webapi。但是,它告诉我,Javascript 如何从web api发布和获取数据uri图像?,javascript,c#,asp.net,asp.net-web-api,Javascript,C#,Asp.net,Asp.net Web Api,我正在尝试将数据uri图像从javascript发布到后端asp.net webapi。但是,它告诉我,输入不是有效的Base-64字符串错误。现在,我了解到这可能是由于数据uri包含的“data:image/png;base64”部分 现在,即使我从数据uri中删除这一部分并只将字符串的其余部分发送到服务器,我如何将Base-64字符串存储在服务器上 此外,如何从webapi中以图像的形式检索这些数据 注意:映像大小将小于200kB,因此将作为varbinary(Max)存储在sql serv
输入不是有效的Base-64字符串
错误。现在,我了解到这可能是由于数据uri包含的“data:image/png;base64”部分
现在,即使我从数据uri中删除这一部分并只将字符串的其余部分发送到服务器,我如何将Base-64字符串存储在服务器上
此外,如何从webapi中以图像的形式检索这些数据
注意:映像大小将小于200kB,因此将作为varbinary(Max)存储在sql server中。将来自客户端的映像以for的字符串形式发布,不指定类型。在您的操作中,您可以通过以下方式获得图像:
var bytes = Convert.FromBase64String(yourStringHere);
using (var ms = new MemoryStream(bytes))
{
image = Image.FromStream(ms);
}
问题是,您应该将图像转换为字节[],并将其作为varbinary存储在服务器中
byte []arr = new byte[image1.ContentLength];
image1.InputStream.Read(arr, 0, image1.ContentLength);
检索时,应将varbinary数据转换为base64字符串,将base64字符串转换为image
string imageBase64Data = Convert.ToBase64String(img);
下面是重要的部分,上面的代码将varbinary转换为base64string。它应该以正确的格式显示图像。下面的代码就是这样做的
string imageDataURL = string.Format("data:image/png;base64,{0}", asd);
Session["Photo"] = imageDataURL;
现在您可以查看您的图像了如果它是一个base 64字符串,为什么不将其存储在varchar列中?@stuartd因此,我将以字符串形式检索数据并添加“data:image/png;base64,'在javascript中是字符串的一部分,对吗?有没有一个更简单的方法,我不必操纵字符串?然后呢?图像是否应存储为varbinary?如何从webapi获取此图像?您可以将其存储为varchar(MAX)。你是说如何从webapi获取它?如果您将它作为带有参数的GET/post请求从客户端发布,那么您可以在您的操作中使用相同的名称放置一个参数(如果它来自post,那么您需要[FromBody]属性)。我要问的是http GET方法是什么样的?假设一个图像的大小为50kB。应该使用分页吗?此外,我认为缓存是必要的,对吗?