【问题标题】:c# - base64 jpeg to MemoryStream?c# - base64 jpeg 到 MemoryStream?
【发布时间】:2019-11-18 16:19:20
【问题描述】:

我有一个 base64 jpeg,如下所示:data:image/jpeg;base64,我正在尝试将其转换为 MemoryStream,以便将其上传到 OneDrive....这是我目前得到的:

byte[] frontBytes = Convert.FromBase64String(user.FrontLicense);

using (MemoryStream frontMS = new MemoryStream(frontBytes))
{
    await graphClient.Me.Drive.Items[newFolder.Id].ItemWithPath("FrontLicense.jpeg").Content.Request().PutAsync<DriveItem>(frontMS);
}

但我收到此错误:

输入不是有效的 Base-64 字符串,因为它包含非 base-64 字符、两个以上的填充字符或非法字符 在填充字符之间。

在这一行:

byte[] frontBytes = Convert.FromBase64String(user.FrontLicense);

这就是 user.FrontLicense 的样子:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoM.....

我做错了什么?

【问题讨论】:

  • 你需要在base64解码之前删除data:image/jpeg;base64,
  • 看起来这可能是重复的...check out this question
  • @JEllery:不是那个副本。

标签: c# asp.net memorystream


【解决方案1】:

开头的部分 - data:image/jpeg;base64, - 不是 base64 数据的一部分。所以你需要先删除它:

const string Base64ImagePrefix = "data:image/jpeg;base64,"
...

if (user.FrontLicense.StartsWith(Base64ImagePrefix))
{
    string base64 = user.FromLicense.Substring(Base64ImagePrefix.Length);
    byte[] data = Convert.FromBase64String(base64);
    // Use the data
}
else
{
    // It didn't advertise itself as a base64 data image. What do you want to do?
}

【讨论】:

    猜你喜欢
    • 2013-09-20
    • 1970-01-01
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 2018-10-17
    相关资源
    最近更新 更多