在使用C#解码Base64字符串之前,您是否删除了数据:image / jpeg; base64?

时间:2015-06-01 12:51:12

标签: c# asp.net image base64 file-conversion

我正在尝试转换从canvas元素中重新调整大小的图像生成的Base64编码字符串,并且在使用Convert.FromBase64()进行转换时出现以下错误

  

输入不是有效的Base-64字符串,因为它包含非基本64个字符,两个以上的填充字符或填充字符中的非法字符。

编码数据看起来像是以

开头和结尾
  

数据:图像/ JPEG; BASE64,/ ... =

我不太明白当我执行Convert.FromBase64()时,我是否需要去掉 data:image / jpeg; base64,的前缀,然后解码余数?

我用来解码的代码如下所示

string base64String = newinput.Value.ToString();

// Convert Base64 String to byte[]
byte[] imageBytes = Convert.FromBase64String(base64String);
MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);


// Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length);
System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true);

string newFile = Guid.NewGuid().ToString() + ".jpg";
image.Save(Path.Combine(Server.MapPath("~/Assets/") + Request.QueryString["id"] + "/", newFile), ImageFormat.Jpeg);

基本上,我将字符串转换为图像并保存在服务器上。如你所见,我正在使用C#

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

  

我是否需要去除数据的前缀:image / jpeg; base64,然后解码余数?

是的 - 前缀不是base64编码的文本,它只是说其余的 base64编码的(以及mime类型是什么)。

我们并不确切知道您是如何获取数据的,但您应该首先检查数据网址 是否声称是base64编码。