【问题标题】:Upload files using cakephp 3 and store it in a blob使用 cakephp 3 上传文件并将其存储在 blob 中
【发布时间】:2015-08-28 16:19:07
【问题描述】:

我知道在数据库中存储文件有点脏,但是我需要将文件上传并存储到数据库 BLOB 中,我没有找到任何关于它的文档,也没有找到任何线索,所以任何有关它的帮助将不胜感激。

提前致谢, 大卫

【问题讨论】:

  • 通常,在您的上传处理程序中,您会获得对创建的临时文件的引用,并将其移动到您想要的位置。相反,听起来您想使用 file_get_contents 并将该数据写入数据库。我不认为这是特定于蛋糕的。也许这就是您没有找到与此特定任务相关的文档的原因。
  • 那么 ¿ 没有办法利用脚手架和/或 ORM 设施吗?我觉得我错过了什么。

标签: cakephp file-upload blob cakephp-3.0


【解决方案1】:

您不需要做任何特别的事情,只需将要存储在适当实体属性(分别为数组键)中的数据设置为字符串或流。

BLOB 列将自动与\Cake\Database\Type\BinaryType database type 相关联,在那里处理存储/读取二进制数据所需的一切。

这是一个抽象示例,展示了可能的用例

$data = [
    'file_a' => file_get_contents('path/to/file.ext'),
    'file_b' => fopen('path/to/file.ext', 'r'),
    'file_c' => 'foo bar baz'
];
$entity = $Table->newEntity($data);
$Table->save($entity);

读取的实体将始终将数据保存为流,因此您可以将它们与 FilesystemStream 函数一起使用,例如

$handle = $Table->get(1)->file_a;
while (!feof($handle)) {
    echo fread($handle, 8192);
}
echo stream_get_contents($Table->get(1)->file_a);

【讨论】:

    猜你喜欢
    • 2020-02-02
    • 2020-11-02
    • 1970-01-01
    • 2021-08-31
    • 2021-06-20
    • 1970-01-01
    • 2017-01-24
    • 2017-08-19
    • 1970-01-01
    相关资源
    最近更新 更多