Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从web api发布和获取数据uri图像?_Javascript_C#_Asp.net_Asp.net Web Api - Fatal编程技术网

Javascript 如何从web api发布和获取数据uri图像?

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

我正在尝试将数据uri图像从javascript发布到后端asp.net webapi。但是,它告诉我,
输入不是有效的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。应该使用分页吗?此外,我认为缓存是必要的,对吗?