Laravel Nova将文件另存为base64

wztqucjr  于 2023-02-20  发布在  其他
关注(0)|答案(1)|浏览(89)

使用Laravel Nova,您可以上传文件:比如File::make(),但是这个只能保存到磁盘上,我想把上传的文件保存为Base64字符串到数据库中,怎么做呢?

n1bvdmb6

n1bvdmb61#

如文档www.example.com中所述https://nova.laravel.com/docs/4.0/resources/file-fields.html#customizing-file-storage,您需要为“文件”字段配置自定义保存。

public function fields(NovaRequest $request)
    {
        return [
            ...
            File::make('imagedata')->store(
                 function (NovaRequest $request, $model) {
                    return [
                        'imagedata' => base64_encode($request->imagedata->get())
                    ];             
                })
        ];
    }

在上面的例子中,imagedate是我想要保存base64编码的表的字段。
要将内容显示为图像,只需添加thumbnail

public function fields(NovaRequest $request)
    {
        return [
            ...
            File::make('imagedata')->store(
                 function (NovaRequest $request, $model) {
                    return [
                        'imagedata' => base64_encode($request->imagedata->get())
                    ];             
                })->thumbnail(function($value, $disk) {
                    return 'data: image/png;base64,' . $value;
            })
        ];
    }

相关问题