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

如何解决处理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编码合并。
  程序打开文件时,用二进制模式再试试看。

6寸掌上电脑突然降价1000,拼多多凭啥最便宜?GPDWIN2掌机上市也快三年了相信很多人都了解WIN2的性能英特尔8100y处理器还是能玩很多游戏的不过毕竟4000多的价格让很多老婆管钱的兄弟望机兴叹现在机会来了现在三千多入手GPDWIN3评测非微软官方的Switch(三)上两篇GPDWIN3评测非微软官方的Switch上一篇GPDWIN3评测非微软官方的Switch(二)性能表现GPD目前提供两种SKU一种是Corei51135G7,另一种是CorGPDWIN3首款Win10滑盖直板掌机,60帧玩大作l全球首款Win10滑盖直板掌机,也是GPD有史以来细节打磨最好的掌机!l最新AAA级游戏大作,大部分均可中特效60帧运行l手柄双振动马达,媲美日本顶级清水三和摇杆的ALPS双3D提欧蓝德半年了,来说说用车感受各位坛友and老司机们大家好,先自我介绍下,楼主92年奔三老汉一个。老家东北的,家里因为求发展所以十几年前就集体搬迁至广州定居,做点小生意。因为是东北汉子,楼主海拔180。外加广东华晨宝马X2,消费者是否买单?宝马的X系列全是大小不一的SUV,从X1到X7涵盖各级的定位以及跨界混搭,不过国产的华晨宝马现仅有X1和X3。今年的成都车展上华晨宝马X2正式登场,X2的国产化不仅丰富了华晨宝马S马自达3即将上市,更运动也更省油全新马自达3即将于今年的9月26号上市,新款马3外观经过重新设计,外观依旧采用马自达魂动设计风格,大灯微调后显得更加犀利,中网的位置也显得更加夸张,看上去更加时尚动感,整体更像是一正面迎战BBA,凯迪拉克CT5面世2019年的成都车展上,凯迪拉克CT5正式亮相。正如其名,CT5是定位在CT6之下的中型轿车,其三围尺寸分别为492418831453(mm),轴距达到2947mm。从展车的外观可这台SUV除了实用至上,还有诗和远方试斯巴鲁XV这次我们拿到的试驾车是一台斯巴鲁XV,但这台XV稍微有点不一样,因为经销商给它换上了一套百路驰Ko2。既然连AT胎都安排上了,认为不能够浪费机会的我们,决定这次的试驾来野一把。XV在地球最恶劣环境而设的火柴盒,全新路虎卫士70多年来,路虎卫士LandRoverDefender一直为那些热衷冒险而好奇的顾客而设,它皮实耐用方形的线条遍布全身,以至于很多人称其为火柴盒工具车。在英国的郊外农场深山越野道上试驾雷克萨斯UX260场面极度舒服随着国内消费升级,年轻消费在购车选车方面需求发生了改变,对于空间实用这些条件不那么看重,更看重品牌设计以及配置方面,追求品质和个人品味体现。今天要介绍的这款车,正是主打年轻消费者对梅赛德斯AMGGLB354matic,还是2。0T的发动机,V8没戏奔驰的最新力作GLB属紧凑型SUV,讨好的外形设计和可容纳多达7名乘客的强大实用性在该级别内难逢对手。尤其是眼前这台AMGGLB354matic,真的是要啥有啥。例如动力高达306
微信开始收费,一年130元起大家好,我是老朋友牙牙。昨天休息天,本来准备睡个昏天黑地,谁知突然收到一条朋友的消息微信要开始收费了!!!微信都要收费了,一向抠门的我哪里还能睡得着仔细看了一下朋友给我的截图才知道vivoX70Pro尊享版开箱及官方功能样张这里是溢图科技(原相机笔记)就在刚刚(9月9日),vivo正式发布了X70系列影像旗舰手机。中杯3699元起(8128)Pro大杯4299元起(8128)以上首销期间赠送TWS2eiPhone13和13Pro有什么区别?根据现有的消息来看,区别还是很大的!什么,你说哪里最大?首当其冲的当然是价格最大了,不出意外的外13全系发售价会和12保持一致,也就是说13标准版的价格6299元起步,13Pro则新品频出旧款降价,想换手机的可以考虑出手了经济导报记者刘勇进入9月份,手机厂商动作频频。9月9日,vivoX70系列新品发布会举行9月13日和23日,华为将连续举办两场新品发布会9月15日,小米和苹果均将举办各自的新品发布煤老板引入华为5G需千万元,商用两年5G到底发展如何?出品搜狐科技作者张雅婷编辑杨锦一年一度的世界5G大会于上周落幕。工业和信息化部部长肖亚庆在会上介绍,目前我国已开通建设5G基站99。3万个,5G基站已经覆盖全国所有地级市95以上的废话文学火到手机圈,魅族居然学到了废话精髓,网友太秀了废话文学火了,最近全民玩起这个废话文学来那叫一个不亦乐乎,比如在聊天随口就来上回想起昨天,仿佛在昨天,这个西红柿,有一股番茄味类似的句子真是让人忍俊不禁,有细心的网友还发现就连鲁迅各大品牌手机你会选谁今年下半年各大品牌手机都在亮剑。vivo今天又发布下半年的高端手机,满满堆料,感觉今年vivo还是有点看头。下面我们一起来看看各品牌的价格vivox70Pro价格6999元iqoo不当老板就不能送外卖?美团正在倒逼数百万外卖小哥成为老板美团又有新麻烦了!近日,不少美团外卖员表示,美团正在要求外卖员注册成立个体工商户,如果不注册,就有可能接不到单子了。从外卖员到个体工商户,看似收入变化不大,但是身份转变了,他们从打2500元档高性价比手机推荐,小米荣耀Realme你选谁?开学了,很多学生都会趁机给自己选购一台称心如意的手机,2500元档手机是一个不错的选择,这个价位附近的手机,无论外观性能还是游戏拍照都会有不错的表现。今天就为大家推荐3款2500元助听器的声音时有时无,这是怎么回事?面对助听器声音时有时无时,是否也遇到以下情况1感觉到儿童助听器与成人助听器相比,出现声音时有时无问题的概率要高一些2超大功率助听器比大功率或中功率,出现声音时有时无现象的概率要大。vivoX70Pro评测可能是今年拍照最好的手机前言早先的时候,笔者对于手机影像方面的态度一直都是还行就行,毕竟手机拍照的使用场景更多的是便携和快速的分享出去,而并非是专业,各个平台动辄把一张照片和视频压缩的完全不能看,这就已经