http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 7335|回复: 1

[Asp.Net] 轻松解决:接收base64上传图片出现错误“Base-64 字符数组或字符串的长度无效”

[复制链接]
发表于 2018-5-29 17:19:56 | 显示全部楼层 |阅读模式
最近在做接口的时候,需要上传图片,就想着使用老方法,还是传入base64,然后进行接口处理上传图片,代码如下:

[C#] 纯文本查看 复制代码
int userId = InputHelper.GetInputInt(context.Request["userId"]);
                string multePic = InputHelper.GetInputString(context.Request["multePic"]);  //Base64
                string extend = InputHelper.GetInputString(context.Request["extend"]);      //后缀

                byte[] bytes = Convert.FromBase64String(multePic.ToString());
                Stream stream = new MemoryStream(bytes);



下面就是保存图片的代码,结果在执行的时候,执行到代码
[C#] 纯文本查看 复制代码
Convert.FromBase64String(multePic.ToString())
时,出现了错误,提示如下:
[XML] 纯文本查看 复制代码
Base-64 字符数组或字符串的长度无效



这时,就找了很多方法,查找了资料,基本上说的都是base64中有特殊字符,需要替换,就抱着试试的态度(毕竟我的base64是使用图片直接生成的,按说不应该有错的),对代码进行了如下的处理:
[C#] 纯文本查看 复制代码
                int userId = InputHelper.GetInputInt(context.Request["userId"]);
                string multePic = InputHelper.GetInputString(context.Request["multePic"]);  //Base64
                string extend = InputHelper.GetInputString(context.Request["extend"]);      //后缀


                string dummyData = multePic.Trim().Replace( "%", "" ).Replace( ",", "" ).Replace( " ", "+" );
                if ( dummyData.Length % 4 > 0 ) {
                    dummyData = dummyData.PadRight( dummyData.Length + 4 - dummyData.Length % 4, '=' );
                }
                byte[] bytes = Convert.FromBase64String( dummyData );

                //byte[] bytes = Convert.FromBase64String(multePic.ToString());
                Stream stream = new MemoryStream(bytes);


将base64中的特殊字符进行了过滤,其它不动,再次测试接口,噢耶,完美的保存成功。


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2018-5-29 17:20:24 | 显示全部楼层
测试使用的base64如下:
iVBORw0KGgoAAAANSUhEUgAAAC4AAAAXCAYAAAB0zH1SAAAAPUlEQVRYhe3OQQ0AIAwAsW0+EDAB+JcGHngcWXJV0Fy9TwxUvwOvjNOM04zTjNOM04zTjNOM04zTjNPGxi8WKgGos7gdzAAAAABJRU5ErkJggg==
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-16 05:40

© 2014-2021

快速回复 返回顶部 返回列表