android - 如何将base64 Android保存到MySQL数据库?
问题描述
我正在使用改造将图像发送到 laravel API
D/NetworkManagementSocketTagger: tagSocket(74) with statsTag=0xffffffff, statsUid=-1
I/mple1.messegin: Background concurrent copying GC freed 21904(27MB) AllocSpace objects, 14(3MB) LOS
objects, 50% free, 18MB/37MB, paused 402us total 102.147ms
E/FF1: 500 Response{protocol=http/1.1, code=500, message=Internal Server Error,
url=http://192.168.1.8/company_messenger/public/apistore}
我看到第一行然后过一会儿其他两行出现
我收到这些错误我不知道到底是什么问题
我将图像转换为base64
ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); // bm is the bitmap object byte[] b = baos.toByteArray(); String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
在 laravel 中,我在 TEXT 类型的列中收到它
PS:当我只发送一个小字符串而不是解码的图像时,它会正确存储
解决方案
你有哪种类型的专栏?
它必须是二进制的,才能存储这种数据
看到这个关于将图像保存在数据库中的讨论作为 encodec64 或 binary直接在数据库中存储图像或作为 base64 数据?
除了存储大量数据外,还大量增加了负载,通常将图像保存在驱动器上并仅保存路径就足够了
您可以在 BlOB 和 TEXT 字段中保存的最大数据量
TINYBLOB, TINYTEXT Up to 255 bytes
BLOB, TEXT Up to 64 Kb
MEDIUMBLOB, MEDIUMTEXT Up to 16 Mb
LONGBLOB, LONGTEXT Up to 4 Gb
如您所见,TEXt 只能保存 64 KB 的数据,而且您的图像可能比使用 Base 54 编码的图像更大,进一步增加了大小
推荐阅读
- html - 在列表标签中将圆盘对齐到中心
- yii2 - Yii2 为什么 PhpStorm 不自动完成单元测试方法
- c - 根据 fgetc(FILE*) 实现,我找不到 FILE 结构的 ungetcflag 成员
- git - 无法使用本地文件夹克隆 git repo
- azure - 使用 Azure AD 对本地(集成 Windows 身份验证)应用程序进行身份验证
- flutter - Flutter:ListView.builder 中的自动垂直高度
- hyperledger-fabric - 超级账本结构链代码:从链代码中调用另一个函数的函数?
- exception - Dart 异常处理无效
- outlook-web-addins - 使用 multipart/Form-data 进行休息 POST 查询
- android - 如何在android studio中使用相对布局时使(按钮)屏幕响应?