如何将存储在数据库中的 Base64 字符串集合转换为普通图像存储在本地目录中

Posted

技术标签:

【中文标题】如何将存储在数据库中的 Base64 字符串集合转换为普通图像存储在本地目录中【英文标题】:How to convert a collection of Base64 strings that is stored on the database, to be stored in a local directory as a normal image 【发布时间】:2020-08-10 07:50:47 【问题描述】:

我有一个 Laravel 应用程序,最初,所有图像都被编码为 base64 字符串并正常存储在数据库中(我的意思是编码字符串),但是现在,我遇到了一些速度问题,所以在为了优化我的应用程序,我决定将存储在数据库中的所有 base64 编码字符串转换为 Laravel 存储中的普通(png 或 jpeg)文件,并且仅将文件路径存储到数据库。

因此,我在玩这个游戏时面临的挑战是,我真的可以编写一个循环遍历所有这些记录的脚本(因为截至今天它们已经超过 1000 行)并为所有记录执行该操作。

【问题讨论】:

***.com/questions/17810501/…。这是一个在开始时删除数据部分,删除所有空格并进行base64解码的问题。 请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。 A note regarding begging 已添加到您四月份的上一个问题中。 【参考方案1】:

粗略的想法:

生成随机文件名:

$filename = "prefix_".uniqid() 。 ".png";

解码你的 base64 值:

$data = base64_decode($data);

使用 Storage 存储它:

存储::磁盘('public')->put($filename, $data);

获取 URL 并将其存储到您的数据库中:

存储::disk('public')->path($filename);

将这些放入循环中以保存所有图像。

【讨论】:

以上是关于如何将存储在数据库中的 Base64 字符串集合转换为普通图像存储在本地目录中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用颤振将 Base64 字符串解码为图像文件

在 MYSQL 数据库中存储 base64 字符串的最佳方法是啥?

我想将图像数据(Texture2D)转换为 Base64 字符串并存储在 Unity3D(C#)中的 JSON 文件中

如何将 base64 字符串格式的图像转换为清晰图像缩小器期望的数据类型?

如何将音频文件转为base64 编码

c语言如何实现16进制字符串转换为 base64