客户端:
var base64Str = this.mImgHead.texture.toDataURL(“image/png”);
将头像转换成base64字符串,
HttpMng.getInt().saveHead(function(){},base64Str);
请求发送至服务器
服务端:
1 ,保存:
public void UploadFace(HttpContext context){
string file = GameRequest.GetFormString(“file”);
string replStr = file.Replace(“data:image/png;base64,”,"");
注意:必须去除前缀否则转换会无法识别编码
replStr = replStr.Replace(" “,”+");
注意:数据传输的时候+字符被自动转换成了+,所有拿到数据都转换回来。
byte[] bt = Convert.FromBase64String(replStr);
转成二进制编码
accountsFace.ID = userID;
accountsFace.CustomFace = bt;
msg = FacadeManage.aideAccountsFacade.InsertCustomFace(accountsFace);
写入至数据库。
}
2,请求头像
public void ProcessRequest( HttpContext context ){
AccountsFace faceModel = FacadeManage.aideAccountsFacade.GetAccountsFace( ID );
string file = Convert.ToBase64String(faceModel.Face);
从数据库获取二进制编码,并转成base64字符串
AjaxJsonValid ajv = new AjaxJsonValid();
file = “data:image/png;base64,”+file;
将前缀加回
ajv.AddDataItem(“list”, file);
ajv.code = 1;
ajv.SetValidDataValue(true);
context.Response.Write(ajv.SerializeToJson());
}
最后客户端,拿到数据后,也需要将空格转换成+。
PS:经过各位大佬的提醒,base64编码字符串是可以直接复制到浏览器打开,如果能显示图片则为正常。