使用cakephp 3上传文件并将其存储在blob中

GoB*_*oBo 3 cakephp blob file-upload cakephp-3.0

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

预先感谢大卫

ndm*_*ndm 6

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

BLOB列将自动与\Cake\Database\Type\BinaryType数据库类型相关联,其中将处理存储/读取二进制数据所需的一切。

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

$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);
Run Code Online (Sandbox Code Playgroud)

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

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