【发布时间】:2019-08-20 10:26:24
【问题描述】:
我开发了一个系统,可以解析电子邮件并将其存储到 MySQL 数据库中。 我将附件作为 JSON 中的对象数组保存到 MEDIUMBLOB 字段中。 一切都几乎按预期工作。至少在保存时。 当我尝试阅读附件时,我只取回图像,而不是 pdf 文件。
BLOB 具有以下“虚拟”内容:
[
{
"filename":"img1.png", "ext":"png", "type": "image/png", "size":4096,
"dispo":"inline", "cid":"123@abc", "content":"base64_encoded binary-
data"
},
{
"filename":"pdf1.pdf", "ext":"pdf", "type": "application/pdf",
"size":4096, "dispo":"attachment", "cid":null,
"content":"base64_encoded binary-data"
}
]
附件是这样写的: json_encode($attachmentsDB,JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)。
我进行了调试,但不知何故,当我从数据库中获取数据 BLOB 时 - 在这种情况下 - 最后一个元素 = 不返回 pdf 文件。只有前面的图片文件。
当我对数据进行硬编码并尝试我的代码时,它可以完美运行。 数据也不会被截断。
看来不是内存问题
如果有人可以给我一个提示请...?
在此先感谢
【问题讨论】:
-
Mediumblob 最多只有 16MB。 Base64 极大地增加了数据的大小,因此即使原始二进制大小低于 16MB,也可能会出现一些数据截断。请包括从数据库中存储和检索文件的代码。
-
@Shadow:好的,谢谢,我会检查这种可能性。当我下载 BLOB.bin 时,一切都很好。