将画布图像上载到服务器并保存到文件

时间:2014-01-24 21:52:33

标签: c# html5 image canvas

我想上传一个画布图像并将其保存为服务器上的.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文件中是正确的,还是我做了其他事情。然后,如果是这样,我必须正确转换我的字符串,我可能也搞砸了。

1 个答案:

答案 0 :(得分:0)

您需要解码数据uri

的base64字符串部分
string strData = postParam.dataURL.Substring("data:image/png;base64,".Length);
byte[] data = Convert.FromBase64String(strData);