这一定是常见问题,但我无法从谷歌找到。我们有一个表格,并且在 postgresql 中有一个 bytea 类型的照片列。我们正在使用此代码段保存即将发布的图像:
$photo->attributes = $_FILES['Photo'];
$file = CUploadedFile::getInstance($photo, 'photo');
$path = Yii::app()->basePath . '/data/' . $file->name;
$file->saveAs($path); //save the file to the $path
$fp = fopen($path, 'rb');
$content = fread($fp, filesize($path)); //get the file content
fclose($fp);
$photo->photo = base64_encode($content); //encode it
$photo->save(); //save the record to db
unlink(Yii::app()->basePath . '/data/' . $file->name);
储蓄似乎运作良好。
这是我们从 db 读取 blob 字段的地方:
base64_decode($data->photo) //this call is giving base64_decode() expects parameter 1 to be string, resource given error.
如果我做:
print_r($data->photo) //I am getting: Resource id #51
显然$data->photo
不是二进制字符串,它是作为资源而来的。知道如何使它工作吗?
提前致谢。