0

我有以下代码来上传和存储文件。

$user->update([
        'display_profile' => request()->display_profile->storeAs('avatars', $name,'public')
]);

这会将文件存储在display_profileas 中avatars/filename.jpg

因为我有多个版本的文件用于在视图周围显示,所以我使用如下前缀

thumb_filename.jpg

小文件名.jpg

大文件名.jpg

我需要做很多字符串替换来插入前缀以显示正确版本的图像。无论如何我可以将文件名保存在完整路径的数据库中吗?

如果不是在视图中显示我的文件的最佳方式是什么?

4

2 回答 2

1

我主要使用这种方法:

$file  = $request->file('display_profile');

$name = $file->getClientOriginalName() . '.' . $file->extension();

$file->storeAs('public/avatars', $name);

$user->update([
     'display_profile' => $name
]);

于 2019-09-23T08:11:13.587 回答
1

当您从请求中检索文件时,这将被转换为UploadedFile对象。您可以轻松检索原始名称,如下所示

$file = $request->display_profile;

$user->update([
    'display_profile' => $file->getClientOriginalName()
]);

对于您的第二个问题,我建议您与一个Image类创建一个关系,您可以在其中存储您需要的所有图像转换。但这可能有点棘手,并且可能需要时间来编码。幸运的是,有大量的库可以为您处理这个问题。我最喜欢的是Laravel 媒体库

于 2019-09-23T07:48:56.300 回答