base64规则:

* 字符串只可能包含A-Z,a-z,0-9,+,/,=字符
* 字符串长度是4的倍数
* =只会出现在字符串最后,可能没有或者一个等号或者两个等号

首先,C# 做上传文件的时候,需要替换掉这些字符:

data:image/jpeg;base64,

data:image/png;base64,

data:image/gif;base64,

if (str.Contains("base64,"))
{
str = str.Split("base64,")[];
}

如果还存在错误的话,可以进行一些字符替换试试:

var imgData = "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCADwAPADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5UooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACip7azubpsWtvNMfSNC38q2LXwf4guTiLSrgH/poAn/oRFRKpCPxOxtTw1ar/AA4N+ibMCiuwi+HPiJhmS3hiH+3Mv9M1Yi+GeuyDO+yUe8jf/E1k8VRX2kdccoxstqUvuOHoru2+F+ugcS2J+krf/E1TuPh54hhHFtDJ/uTL/XFCxVF/aQSyjGx3pS+45City78J69aLmbSror6xp5g/8dzWNLFJC5SVGjcdVYYNbRnGXwu5x1KFSlpUi16qwyiiiqMgop8cbyuEjRnY9AoyafdW09pJ5d1BLDJgNtkQqcHocGldbD5Xa9tCGiiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvePCOh6PFoem3P8AZdsZpbeORpHTeSxUEnJzjn0rwevorwTIsvhLSeQcWyKR9BivMzOTjBWfU+q4VpwnXnzxT0/U2CkflYVVCAcADGKS2XEfuabIDECV+6eo9KktzmIYrwz7/oMb95Lt/hXrUjuI15/AUyH77/WibiVGb7tAB5xHLIQKkBV145BoBDDgg1GBsmAHRu1IBE/dybD909KbeW8VxFiaNJAOcOoIp9wMKG9Dmpeop36iavuZEuiaO6Bn0nT3Y+tsh/pTrfw9pEXI0uwDeot0GP0q5bgs5z0Sp5H2IT+VVzy2uZfV6V/hX3IjRILVdsESJn+FFAryP4zwY1iwuSu1pYCh99rf/ZV69EmPmbljXl3xwA8zR2HpMP8A0D/GuvL3/tC+f5Hj8RQX9nz02t+aPLqKKK+iPzQKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvonwlYzWXhfTYZxsuEhG4emecH868d+HeinWPEcIdd1vb/vpPQ46D8T+gNe/wDavGzSqrqmvU+34Twkoxnin10X6/16jEIkjye/WorY7WaI9jxUlv8Adb0zUbITMxX7wryT7Ic/7uTf/CeDU3DD1FRo6uMMMHuDSeTj7jFfagCQKqfdAFRg+ZMCOi96PJLffckelSAKi4HAFICO4OVA9Tipe1QofNk3fwr096lc7VJPagCK3x85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";
//过滤特殊字符即可
string dummyData = imgData.Trim().Replace("%", "").Replace(",", "").Replace(" ", "+");byte[] byteArray = Convert.FromBase64String(dummyData);

上面两步操作完了还没有解决问题的话,可以调试看看base64字符串的长度,如果长度不是4的倍数,比如8057或者8041,可以尝试截掉最后一个字符,使字符长度变为4的倍数。(能正常解决bug,但不确定是否会产生其他问题)

str = str.Substring(, str.Length - );

上面两个长度其实是本人调试的时候遇到的,神奇的是,复制粘贴后就会变成8056长度,可以正常解析。如果有大佬知道是怎么回事的话,欢迎评论沟通。

Base-64字符串无效,The input is not a valid Base-64 string as it contains a non-base 64 character的更多相关文章

  1. winform错误提示 :窗口类名无效(Window class name is not valid)

    winfrom 程序在 xp 操作系统上报错提示 窗口类名无效(Window class name is not valid) 解决方法 注释 Program类 里 这句 Application.En ...

  2. git是一种分布式代码管理工具,git通过树的形式记录文件的更改历史,比如: base'<--base<--A<--A' ^ | --- B<--B' 小米工程师常常需要寻找两个分支最近的分割点,即base.假设git 树是多叉树,请实现一个算法,计算git树上任意两点的最近分割点。 (假设git树节点数为n,用邻接矩阵的形式表示git树:字符串数组matrix包含n个字符串,每个字符串由字符'0

    // ConsoleApplication10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream& ...

  3. [Swift]LeetCode434. 字符串中的单词数 | Number of Segments in a String

    Count the number of segments in a string, where a segment is defined to be a contiguous sequence of ...

  4. [Swift]LeetCode806. 写字符串需要的行数 | Number of Lines To Write String

    We are to write the letters of a given string S, from left to right into lines. Each line has maximu ...

  5. [Swift]LeetCode833. 字符串中的查找与替换 | Find And Replace in String

    To some string S, we will perform some replacement operations that replace groups of letters with ne ...

  6. 循环遍历Java字符串字符的规范方法——类似python for ch in string

    比如我将string作为CNN 文本处理输入: float [] input = new float[maxLength]; // 1 sentence by maxLenWords // int[] ...

  7. C#LeetCode刷题之#557-反转字符串中的单词 III(Reverse Words in a String III)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3955 访问. 给定一个字符串,你需要反转字符串中每个单词的字符顺 ...

  8. C#LeetCode刷题之#345-反转字符串中的元音字母​​​​​​​(Reverse Vowels of a String)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3935 访问. 编写一个函数,以字符串作为输入,反转该字符串中的元 ...

  9. 字符串中判断存在的几种模式和效率(string.contains、string.IndexOf、Regex.Match)

    通常情况下,我们判断一个字符串中是否存在某值常常会用string.contains,其实判断一个字符串中存在某值的方法有很多种,最常用的就是前述所说的string.contains,相对来说比较常用的 ...

随机推荐

  1. day05:数组与字典常识(20170217)

    #1:数组功能的使用:print ("a4A".isdecimal()) #print ("18".isdigit()) #判断是否是数字print (&quo ...

  2. Jenkins-gogs安装及使用

    很多同学可能第一次了解什么是ci-cd,什么是Jenkins,首先会介绍下cicd的概念及应用场景,之后再详细介绍下Jenkins的概念.安装及使用. 什么是CI-CD? 首先明确CI-CD是一种技术 ...

  3. 你真的了解负载均衡中间件nginx吗?

    前言 nginx可所谓是如今最好用的软件级别的负载均衡了.通过nginx的高性能,并发能力强,占用内存下的特点,可以搭建高性能的代理服务.同时nginx还能作为web服务器,反向代理,动静分离服务器. ...

  4. springboot连接数据源,配置数据库

    Spring官方DriverManagerDataSource的配置 修改yml #配置数据源的属性 spring: datasource: driver-class-name: com.mysql. ...

  5. Istio Gateway网关

    Istio Ingress Gateway Istio 服务网格中的网关 使用网关为网格来管理入站和出站流量,可以让用户指定要进入或离开网格的流量. 使用网关为网格来管理入站和出站流量,可以让用户指定 ...

  6. Python Redis常用操作(持续更新)

    目录 1.Redis简介 2.Redis部署 3.Redis API应用 4.String操作 1.Redis简介 redis是业界主流的key-value,nosql数据库之一.和Memcached ...

  7. uniapp轻轻松松开发各种类型的小程序

    1.前言 现在移动端用户使用量占据了市场大部分的比例,今天 给大家说说怎么去开发一个小程序,今天使用的是uniapp 2.什么是uniapp uni-app 是一个使用 Vue.js 开发所有前端应用 ...

  8. Java获取主板序列号、MAC地址、CPU序列号工具类

    import java.io.File; import java.io.FileWriter; import java.io.BufferedReader; import java.io.IOExce ...

  9. [Wireshark]_003_电子邮件抓包分析

    电子邮件是我们的生活工作中经常使用的一种服务,用来联系世界各地的朋友,客户.下面我们就用Wireshark对电子邮件进行抓包. 准备工作: 邮件客户端一款(Outlook,Foxmail,KooMai ...

  10. 七个生产案例告诉你BATJ为何选择ElasticSearch!应用场景和优势!

    本文来源于公众号[胖滚猪学编程],转载请注明出处. 从今天开始,想和你一起死磕ElasticSearch,学习分布式搜索引擎,跟着胖滚猪就对了! 既然是ES的第一课,那么最重要的是让你爱上它!不想说那 ...