如何将存储在数据库中的 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 字符串集合转换为普通图像存储在本地目录中的主要内容,如果未能解决你的问题,请参考以下文章
在 MYSQL 数据库中存储 base64 字符串的最佳方法是啥?
我想将图像数据(Texture2D)转换为 Base64 字符串并存储在 Unity3D(C#)中的 JSON 文件中