我想上传一个画布图像并将其保存为服务器上的.png文件,该服务器使用webapi。
我已经找到了将dataurl作为字符串上传到服务器的方法。我已经尝试从中创建一个byte []并保存它,但是当我用paint打开文件时它会告诉我文件已损坏。
client:
var dataURL = canvas.toDataURL('image/png');
Server:
string strData = postParam.dataURL.Substring("data:image/png;base64,".Length);
List<byte> src = new List<byte>();
for (int i = 0; i < strData.Length; i++)
{
char c = strData[i];
byte b = Convert.ToByte(c);
src.Add(b);
}
System.IO.FileStream fs = System.IO.File.Create(@"D:\git\Lens\Lens.Server.UI.HTML5\reports\chartImages\hello.png", 100000, System.IO.FileOptions.None);
System.IO.BinaryWriter bw = new System.IO.BinaryWriter(fs);
bw.Write(src.ToArray());
所以我认为我的问题是,图像数据源的byte []是否存储在png文件中是正确的,还是我做了其他事情。然后,如果是这样,我必须正确转换我的字符串,我可能也搞砸了。
答案 0 :(得分:0)
您需要解码数据uri
的base64字符串部分string strData = postParam.dataURL.Substring("data:image/png;base64,".Length);
byte[] data = Convert.FromBase64String(strData);