【问题标题】:Is it acceptable to pass a base64 string from the client to the server to utilize?将 base64 字符串从客户端传递到服务器以供使用是否可以接受?
【发布时间】:2016-12-14 17:20:12
【问题描述】:

是否可以将base64字符串从客户端传递到服务器进行保存?

客户端保存我有创建 BASE64 字符串的代码...
数据:图像/png;base64,iVBORw0KGgoAAAANSUh.....等....

但是,当我尝试转换此服务器端时,我收到一个错误,即输入不是有效的 Base-64 字符串。

在我的 C# 代码中,我有:

// Data Type
public List<object[][]> MyData;


var imgStr = MyData[0][0].ToString();
var bytes = Convert.FromBase64String(imgStr); // Get error here

有没有更好的方法从客户端幻灯片中获取图像并将其传递给服务器端使用?

【问题讨论】:

  • 您是否确认imgStr 包含在客户端上创建的确切Base64 字符串?
  • 您要转换的字符串是否包含data: URI?它应该只使用base64,之后的东西...
  • 请注意,base64 占用的带宽比它的二进制计数器多 33%。

标签: c# image


【解决方案1】:

您需要从字符串中删除data:image/png;base64,。那是元数据。实际的 base64 编码字节在逗号之后开始。

【讨论】:

    【解决方案2】:

    Base64 由字符 A-Za-z0-9+/ 组成,除了必须放在末尾的 = 字符数( Base64 *编码最复杂的部分),

    正如您在数据字符串中看到的,data:image/png;base64, 前缀只是metadata,它不是任何有效的 Base64 编码字符串的一部分。这是一种可以从字符串中删除它的方法:

    String base64 = "data:image/png;base64,iVBORw0KGgoAAAANSUh.....";
    base64 = base64.substring(22, base64.length());
    

    如果您希望它适用于任何图像类型,则需要使用正则表达式。

    【讨论】:

    • Base64 不是加密,它是一种编码。
    【解决方案3】:

    在@benstopics 响应之后,通过在逗号上拆分然后获取第二部分(例如)来剥离元数据可能更容易

    String base64 = "data:image/png;base64,iVBORw0KGgoAAAANSUh.....";
    base64 = base64.split(',')[1];
    

    【讨论】:

      猜你喜欢
      • 2018-06-20
      • 1970-01-01
      • 2015-05-21
      • 2018-04-02
      • 1970-01-01
      • 2012-05-03
      • 2018-05-04
      • 2017-04-12
      • 1970-01-01
      相关资源
      最近更新 更多