Laravel上传文件时仅存储文件名



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

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

这会将文件存储为avatars/filename.jpgdisplay_profile

由于我有多个版本的文件用于在视图周围显示,因此我正在使用前缀,例如以下内容

thumb_filename.jpg

small_filename.jpg

large_filename.jpg

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

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

我主要使用这种方法:

$file  = $request->file('display_profile');
$name = $file->getClientOriginalName() . '.' . $file->extension();
$file->storeAs('public/avatars', $name);
$user->update([
'display_profile' => $name
]);

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

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

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

最新更新