我在 Laravel 安装中使用 PostgreSQL。表有一个字节类型字段,用于存储二进制数据(base64_encoded 文件内容)。
当我使用 Eloquent 检索表时,我会在此字段中返回一个资源类型变量。
我怎样才能将其作为字符串检索?
$raw = Media::where('id','=',$id)->first();
$raw->file_data = base64_decode($raw->file_data); // doesn't work
我在 Laravel 安装中使用 PostgreSQL。表有一个字节类型字段,用于存储二进制数据(base64_encoded 文件内容)。
当我使用 Eloquent 检索表时,我会在此字段中返回一个资源类型变量。
我怎样才能将其作为字符串检索?
$raw = Media::where('id','=',$id)->first();
$raw->file_data = base64_decode($raw->file_data); // doesn't work
由于该问题的作者没有将详细信息发布到答案中,因此我将在此处发布我的发现。
由于返回的字段是流的句柄,您可以使用stream_get_contents函数将值读入字符串,然后可以使用 pg_unescape_bytea 获取 bytea 数据的实际值。最后,如果您希望以 HTML 格式显示 bytea 数据,请使用 htmlspecialchars 函数。
示例代码:
$my_bytea = stream_get_contents($resource);
$my_string = pg_unescape_bytea($my_bytea);
$html_data = htmlspecialchars($my_string);
答案是在流上使用 stream_get_contents。呃。