2014-01-24 89 views
0

我想上傳畫布圖像並將其保存爲使用webapi的服務器上的.png文件。將畫布圖像上傳到服務器並保存到文件

我已經想出了一種方法來將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()); 

所以我想我的問題是,在圖像數據源,即使在一個PNG文件來存儲正確的事情的字節[]還是我做別的事情。如果是這樣,我必須正確地轉換我的字符串,我可能會搞砸了。

回答

0

您需要將數據URI的字符串的base64解碼部分

string strData = postParam.dataURL.Substring("data:image/png;base64,".Length); 
byte[] data = Convert.FromBase64String(strData); 
相關問題