客户要求把用户上传的 8~9MB 照片全部 base64 保存进数据库防止被传马,API 直接返回 base64 ,给他解释 base64 会让图片变大他理解不了
|      1rainboat      2022-04-15 21:10:15 +08:00 实践是检验真理的唯一标准,多找几张图转成 base64 编码试试 | 
|      2claneo      2022-04-15 21:11:54 +08:00 33% | 
|  |      3gdfsjunjun      2022-04-15 21:13:27 +08:00 数据库存 base64?是个勇士 | 
|  |      4gdfsjunjun      2022-04-15 21:14:17 +08:00 自己搭建图床系统,数据库只存图片路径 | 
|  |      5yaoyaomoe      2022-04-15 21:14:25 +08:00 via iPhone  1 36 This encoding causes an overhead of 33–36% (33% by the encoding itself; up to 3% more by the inserted line breaks). 来源 维基百科 Base64 但是 gzip 可以解决一部分 | 
|  |      6chendy      2022-04-15 21:17:46 +08:00 数据库存 blob 呗,base64 何必呢 | 
|      7jinliming2      2022-04-15 21:26:14 +08:00  1 @yaoyao1128 通常不做展示的话,不会插换行符的,所以就是 33% | 
|      8aptx4689      2022-04-15 21:47:54 +08:00  2 你可以给他演示一下用 base64 存数据库也能挂马 | 
|  |      9crab      2022-04-15 21:57:03 +08:00 4/3 | 
|  |      10yuzo555      2022-04-15 22:04:09 +08:00  2 三个字节的原文会变成 4 个字节的 Base64 编码。 | 
|  |      11Tink PRO 数据库字段得多长. | 
|  |      12FreeEx      2022-04-15 22:21:52 +08:00 via iPhone minIO 不好用吗 | 
|      13xianrenT      2022-04-15 22:25:52 +08:00 @gdfsjunjun 为啥是个勇士,除了占用空间还有什么坏处吗? | 
|      15vvhhaaattt      2022-04-15 23:06:47 +08:00 via Android 我记得谷歌相册 web 就是将图片 base64 编码后上传? | 
|      16vvhhaaattt      2022-04-15 23:14:35 +08:00 via Android @vvhhaaattt 搜索了下没有相关文档。但我记得是哪个服务上传图片的接口要用 base64 编码,文档中还提到图片大小跟占用宽带不一致,服务端限制的图片大小而不是宽带大小。 另外 base64 编码后比较方便放到 json 中,统一接口 content type 。 | 
|      17vvhhaaattt      2022-04-15 23:16:40 +08:00 via Android 😅没仔细看是入库编码啊…… | 
|  |      18xtinput      2022-04-15 23:22:49 +08:00 base64 的有效数据 75%,所以会增大 33.333% | 
|  |      19kaiki      2022-04-15 23:25:53 +08:00 前端获取不到后端文件的路径的话,就算是木马也没法执行啊,原文件储存,中间用个图片解析程序中转下不就行了 | 
|  |      20mikewang      2022-04-16 00:16:05 +08:00  9 Base64 ,故名思义,64 进制( 2^6 ),一个字符表示 6 个比特数据 一个字符计算机储存为 8 个比特,多出来(8-6)/6 = 1/3 = 33.33% | 
|  |      213dwelcome      2022-04-16 00:52:41 +08:00  1 说出来你们可能不信,base64 增大的那 33%,只要用目前较强力的压缩算法,比如 7z ,又可以把增大的部分给压回去。 所以 base64+7z, 可能最终对比原图 JPG 大小,也就大个 5%。 | 
|  |      22IvanLi127      2022-04-16 01:12:40 +08:00 via Android 还不趁机加价加工期 | 
|  |      23sneezry      2022-04-16 03:08:07 +08:00 这都是什么可爱客户 | 
|      24Quarter      2022-04-16 08:21:41 +08:00 via iPhone mongo ? | 
|  |      25play78      2022-04-16 08:40:44 +08:00 这种方式有个客户刚好用上,最后问,为什么每次请求都那么慢。 是因为普通的文件服务器,图片能在浏览器缓存,而数据库查询出来的图片,做缓存很麻烦,要写代码做。 | 
|      26gam2046      2022-04-16 09:47:30 +08:00  1 @3dwelcome #21 7z 以后还是 blob 数据,那么既然如此,为何还要走 base64 -> 7z 这条路,直接图片本身 blob 入库。最后结果是一样,而且这么兜了一圈以后,base64 浪费一遍 CPU 资源,zip/unzip 又费一次 CPU 。 | 
|  |      27cheng6563      2022-04-16 12:40:21 +08:00 存储体积会涨 36%,但是,内存占用可能会翻个好几倍 | 
|  |      29markgor      2022-04-16 13:13:25 +08:00 之前有遇到过一个搞.NET PC 端的,他们就是把图片传入 sqlserver 的,但没有 base64 ,直接传 blob 。 我觉得直接把图片传入数据库中好处是:不用理会路径。 坏处是:当 sqlserver 为远程时容易把 sqlserver 的带宽打满导致响应不了其他请求。 其实配置下静态目录和执行权限,安全系数不会比存数据库低吧,而且就算存数据库为什么要 base64 呢? | 
|  |      30markgor      2022-04-16 13:16:38 +08:00 话说这让我联想起 9 年前,和客户吃饭时客户专门带上懂电脑的朋友,试探性的问了我一句如果被 DDOS 了怎么办。 我那时候回复是只能硬抗,要么上设备清洗要么加大带宽。 然后他似笑非笑的说为什么不把 DNS 改为 127.0.0.1 当时我很无语,随后问他那拔网线不是更快...... | 
|      32aylmer      2022-04-16 14:48:30 +08:00 直接上 oss 就解决的事,为什么要弄得这么麻烦呢 | 
|  |      33en20      2022-04-16 15:02:45 +08:00 经典客户不懂装懂,你还是顺着他意思吧 | 
|  |      34wupher      2022-04-16 17:28:25 +08:00  1 他愿意为此掏钱就照做吧,不过建议明确注明此项技术方案是甲方要求,由此引发的相关问题不担责即可。 | 
|  |      35marcojbk      2022-04-16 22:02:41 +08:00 via iPhone 这不是好事吗,硬件要求又提高不少,买硬件的回扣你能多挣不少呢 | 
|  |      36caisanli      2022-04-17 08:41:46 +08:00 via iPhone 我以前搞过一次 做一个新闻页 需要上传图片 领导不给文件服务资源 我就把图片转 base64 存数据库🤣 | 
|      37mutalisk      2022-04-17 11:29:34 +08:00 @3dwelcome 压回去不又变成二进制流了么,很多都是不可见字符。本来做 base64 的目的不就是都是可见的字符么,便于 json 传输或者终端打印。既然要压,那干嘛不直接用原来的图片字节流呢。 | 
|      39shanyue      2022-04-17 20:17:08 +08:00  1 33%,可以根据这个工具 https://devtool.tech/base64 ,看一下编码的过程,为什么是 33% 一目了然。 | 
|  |      40debuggeeker      2022-04-18 09:33:16 +08:00 其实如果不是需要原图的话,可以保存 2 份,保存一次原图,制作一次采样图片,也保存到 oss 中,这种图片肯定不放数据库的,都是第三方储存桶。客户需要图片,就把图片地址丢给他,原图和采样都给,然他自己拿。采样工具可以 GitHub 看 Luban |