范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

如何解决处理base64编码文件大小不能超过71MB的问题?

  说实话,第一眼看到这个问题,我被震住了,心想到底是什么样的勇气能让题主竟然用base64编码来处理大文件,这岂不自寻烦恼,所以对于这个问题,我的建议不是该如何解决base64编码的大小问题,而是要换一种方式来存储文件,比如用文件系统。
  问题剖析
  先来分析下这个问题的原因,一般搞开发的都知道base64编码很大程度上是简化了我们传输文件的方式,特别是对于没有文件系统的团队来说,更是难得,但是这里的文件仅仅指的是小文件、小图片(如:头像、二维码等)之类的,因为大文件转化出来的base64编码真的很长很长,先说这不利于网络传输,就算勉强传输过去了,数据库也不见得能存储下来,就算勉强存储下来了,重新再获取的时候也一定会影响速度和效率。
  至于题主说的71M的问题,其实base64编码出来的长度可能就不止71M了,因为base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3,对此,我特意在线编码了一个大于71M的文件,感觉还是可以编码的,只是速度是真的很慢,网页都卡死了好几回,不知道题主用的是哪门语言,可能不同语言间也会有差距。
  解决方法
  1、采用文件系统
  对于大文件的存储我还是提倡用文件系统来进行存储,这样的话就只要存储文件路径就好了,这样不仅传输快,数据库各方面也没啥压力,读写文件也很方便。可能有的团队觉得搭建文件系统很麻烦,并且也没有多余的服务器来管理文件,如果是这样的话,其实还可以考虑用云端的文件系统(如:阿里云OSS),这样的话,我们存储文件的时候就只要用它们接口将文件传给云端,获取文件的时候就只要调特定的接口获取文件url即可。
  2、将大文件切割成小文件
  如果仍然是不想用文件系统的话,那就只好从源头出发,把大文件切割成小文件,然后依次用base64编码,还原的时候就先将base64编码转成对应的小文件, 然后不同的小文件再合成大文件。
  切割的方式可以通过压缩文件的方式,比如对一个31M的文件右击 -> 添加到压缩文件,下面会有一个分卷的地方,大小可以填小一点,如下图所示:
  然后点"确定"后就会生成3个小文件,如下图所示:
  合成文件就更简单了,将这三个小文件右击 -> 解压到当前目录或某一个目录下就好了。
  这种方法虽然也能达到目的,但是也看到了,这样处理文件的代价是非常大的。
  结束语
  base64编码虽然是个好东西,从一定程度上简化了开发人员处理小文件的方式,但是却不是通用的,所以我们在处理小文件上可以采用base64编解码的方式,但是对于大文件来说还是建议使用文件系统的方式 ,这样不仅对文件的管理更得体,也可以减少开发中遇到的不少问题。
  base64只是一种二进制转换字符的编码方式而已,并不存在什么位数限制。这多大的数据都能编码,这是毫无疑问的。
  所以你编码71M文件时出错,很明显是你使用的转换库有问题。
  这个报错很明显是这个库编码base64时,直接把输出的base64编码存到了一个字符串变量里去,导致字符串变量数据过大,从而益出报错。
  所以解决方案很简单,不要直接去对71M的数据进行转换。
  一  你可以在读取图片的时候,不要一次性把图片全部加载到内存里,而是写一个循环,按照固定的位数去读区。绝大多数语言的read()方法都支持位读取。
  这样一块一块的编码就不会溢出了。
  二 你也可以使用缓冲区而不是变量,先把图片读到缓冲区中,然后同上,按照位数分片转换。
  最后要注意,输出结果的时候,千万不能把结果直接累加在一个变量中,这样一样会溢出。
  你可以
  一 分片转换,然后分片直接打印
  二  分片的把结果写入一个文件中
  三 直接分片进行网络传输,客户端在进行组合。
  四 用数组,堆,字典等等复杂数据结构来储存结果。
  袜子不能当避孕套用。东西要用对场合。
  不评价为何需要这么大的base64,第一,base64是编码方式并不存在71兆的限制
  第二,如果你遇到的库有这个限制,可能是实现的方式,或者你调用了简版的API,肯定是可以流式处理的。
  明白了估计是想用base64过防火墙传送文件,其实我建议还是切片方式最理想
  比如按照1MB为一个缓冲区把byte[]读取出来做base64编码传递后再合并是最高效率的,另外可以查看一下网络的mtu对数据包做调整,这样可以提高文件切片的传输效率。
  另外base64可以用opencl提高编码和解码速度
  base64只是一个常见的编码手段,没有容量的限制。我猜是你用的类库有问题,或者自己的代码有问题。以数据流的方式处理,是不存在任何限制的。
  想起来以前计算md5,一开始不懂,就是把整个文件读到内存里再计算,经常发生内存溢出。后来仔细看文档,发现还有个方法,可以分段计算。
  补充:刚注意到你用的是certutil ,这个本来是用来处理证书的,证书本身都很小,所以它没提过流式处理也正常。
  我们经常说"杀鸡用宰牛刀",你这算是"宰牛用杀鸡刀"了。
  分段base64
  刚才研究了一下,确实出现了内存溢出情况。
  这里有个小想法,不知可行不可行。
  首先先将文件进行分段,
  之后将不同的段进行生成base64编码,
  等全部生成完毕之后,进行base64编码合并。
  程序打开文件时,用二进制模式再试试看。

山东卓文智能型断路器的好处山东卓文智能型断路器的好处对于现代需求的提升以及人们对安全用电意识的增强,传统断路器功能上逐渐无法满足日常生活中对用电安全的需求,山东卓文智能型断路器在传统空开配电设备上进行升级,远程控制电源开关无线远程控制开关山东卓文信息科技有限公司远程控制电源开关无线远程控制开关山东卓文信息科技有限公司山东卓文信息科技有限公司推出的远程控制电源开关(智能微型融合断路器)具有智能断路云控电技术,是一款可以进行远程控制分合闸的远山东卓文信息科技有限公司配电物联网解决方案助力泛在电力建设山东卓文信息科技有限公司配电物联网解决方案助力泛在电力建设关键词泛在电力物联网智能电网智能电表智慧用电配电物联网的建设已经成为当下泛在电力物联网建设的主要支撑。在今年年初关于三型两便携的移动路由器,让出行用网更灵活对于一个普通的人来说,外出的时候只要带上手机,就能轻松搞定一切问题,因为手机不仅有电,还可以上网。可手机也是有很多弊端,比如屏幕比较小,办公不是很方便。所以很多人外出的时候,会带上轮胎加气居然要三十块钱轮胎加气居然要三十块钱,今天大早上的也是客户急急忙忙的要货,于是装了一车货在三轮车上,看着轮胎似乎有点瘪,没多少气,也没管很多,客户这边也是吹的急,然后送了过去,回来的时候心想着加知产晨报魅族公开汽车无死角驱蚊专利,爱奇艺诉字节不正当竞争8月13日知识产权快讯1hr专利魅族公开汽车无死角驱蚊专利可判断蚊子品种性别位置珠海市魅族科技有限公司公开一种汽车驱蚊方法处理器及驱蚊系统专利。专利摘要显示,本发明汽车驱蚊方法包括知产晨报华为公开自动驾驶测量积水深度专利理想汽车01hr专利华为公开自动驾驶测量积水深度专利近日,暴雨频繁。司机开车通过积水路段时,以前只能靠蒙,或者下车进行测量,而现在,华为申请的一项专利可能会解决这个问题。华为技术有限公司公知产晨报小米汽车商标被驳回,字节跳动加入开源专利社区OIN9月03日知识产权快讯1hr专利OPPO虚拟SIM卡专利获授权,无需卡托或卡座即可实现SIM卡功能9月1日消息,OPPO广东移动通信有限公司虚拟SIM卡的实现方法装置系统及移动终端别人的东西就是香华硕灵耀U10笔记本体验最近帮同事物色一个商务本,他需求主要是性能颜值轻便型。把购买商务本当做项目去做,第一步就是确定需求,缩小范围,询问预算和具体用途。预算7000,但是最高有10的活动空间(私房钱),公共广播系统与专业音响系统可以通用吗?阜新声艺视听与民用(家庭)音响相比,公共广播(PUBLICADDRESS)也是一种专业音响。但是我们通常说的专业音响(PROFESSIONALAUDIO)是特指舞台(演出)类音响。而公共广播同了解7种常见类型的麦克风阜新声艺视听麦克风对于音乐人来说是一件很个人的物品,在选择时往往要考虑多种因素。在品类繁多的麦克风里,也并没有某种麦克风是最好的之类的定理。每个类型的麦克风都有他们独特的性质和用途,产生的声音
左手百度右手华为,名气比销量大,极狐销量还能起来吗?极狐其实是一个合资品牌,是北汽与加拿大麦格纳零部件供应商合作的汽车品牌。极狐这个品牌一开始并不响亮。是在2019年的上海车展前夕,开展了一场声势浩大的极狐品牌之夜,后来极狐这个品牌名下有报废车,不能上牌怎么办?别急我教你怎么办前段时间不少粉丝私信我说,汽车没有报废直接卖给收废品的,导致现在新车不能上牌,这是自己的原因?还是其他环节出了问题?我现在可以明确地告诉你,确实是自己的问题,汽车如果不想开了,就需二手车异地交易新方式,不用两地来回跑,手机一键就搞定现在二手车的市场越来越大,获得二手车的渠道也多起来了,以前在本地的二手车市场转转,差不多就买了,现在各种手机APP,天南海北地找自己喜欢的汽车,信息发达了买车也不用再妥协!但是异地前脸终于改了,帕萨特迎来中期改款,价格或有下调帕萨特作为B级车里的标杆车型,提起它给人的第一感觉就是大气稳重!而这次的中期改款,外观终于有所改变了,还做了两款前脸。虽然说价格还没有公布,但是据推测价格应该有所下调,或为16。8宝马X3MX4M雷霆版,新增动力48V轻混,起售价83。99万成都车展上,全新宝马X3MX4M雷霆版上市了,新车为4款车型,动力上也首次使用了48V轻混动力,新车还是非常炫酷的,官方指导价格83。9992。99万元,其实两款汽车的外观,改动的动力增加油耗减少,搭配CVVT技术,第五代途胜L值得购买吗?北京现代的市场表现,以前总给人一种高不高,低不低的状态。北京现代显然也意识到了这个问题,连续更新了数款新车,什么新款伊兰特索纳塔第五代途胜L等,直接刮一阵韩风,想要改变这种市场的表8AT三把锁,全球限量2021辆,BJ40环塔冠军版售价20。99万BJ40环塔冠军版,这款车其实是为了庆祝BJ40征战环塔拉力赛,获得三连冠而诞生的。这台车全球限量2021台,售价为20。99万,这款车和其他版本的BJ40有哪些区别呢?下面就跟随长安欧尚X7PLUS将上市,搭载全新1。5T蓝鲸发动机,预售价7。99万起长安欧尚这几年的销量不错,单说今年长安欧尚18月份的销量超过了16万台,主要还是凭借旗下的两款SUV迅速打开了市场,分别是欧尚X5和欧尚X7,随着市场需要和不断升级,车型也需要不断iOS14。7续航测试出炉,表现还不错苹果本周推送了iOS14。7正式版更新,为iPhone12系列加入对MagSafe外接电池的支持,并修复了AppleMusic播放空间音频与无损音频时遇到的卡15s等问题。iOS1专业音响设备为何要用分频器声拓电子音爵士专业音响设备为何要用分频器声拓电子音爵士分频器是一种可以将声音信号分成若干个频段的音响设备。给大家了解的是专业音响高低音分离式音箱为什么要使用分频器。在专业音响中高音单元一般为号角专业音响设备安全及使用的要点一声拓电子音爵士专业音响设备安全及使用的要点一声拓电子音爵士一专业音响系统使用要求电子设备在使用过程中都要留意机器的使用前提,专业音响系统设备更应留意使用前提。一般在机器的使用仿单中都会列出机器的