Laravel 上传文件时只存储文件名
Laravel Store only filename when uploading a file
我有以下代码来上传和存储文件。
$user->update([
'display_profile' => request()->display_profile->storeAs('avatars', $name,'public')
]);
这会将 display_profile
中的文件存储为 avatars/filename.jpg
。
由于我有多个版本的文件用于在视图周围显示,因此我使用了 follow
这样的前缀
thumb_filename.jpg
small_filename.jpg
large_filename.jpg
我将需要进行大量字符串替换以插入前缀以显示图像的正确版本。无论如何,我可以只将文件名保存在数据库中而不是完整路径吗?
如果不是,在视图中显示我的文件的最佳方式是什么?
当您从请求中检索文件时,这将被转换为 UploadedFile
对象。您可以按照以下方式轻松检索原始名称
$file = $request->display_profile;
$user->update([
'display_profile' => $file->getClientOriginalName()
]);
对于你的第二个问题,我建议你创建一个与 Image
class 的关系,你可以在其中存储你需要的所有图像转换。但这可能有点棘手,可能需要时间进行编码。幸运的是,有大量的库可以为您处理这个问题。我最喜欢的是 Laravel medialibrary
我主要使用这种方法:
$file = $request->file('display_profile');
$name = $file->getClientOriginalName() . '.' . $file->extension();
$file->storeAs('public/avatars', $name);
$user->update([
'display_profile' => $name
]);
我有以下代码来上传和存储文件。
$user->update([
'display_profile' => request()->display_profile->storeAs('avatars', $name,'public')
]);
这会将 display_profile
中的文件存储为 avatars/filename.jpg
。
由于我有多个版本的文件用于在视图周围显示,因此我使用了 follow
这样的前缀thumb_filename.jpg
small_filename.jpg
large_filename.jpg
我将需要进行大量字符串替换以插入前缀以显示图像的正确版本。无论如何,我可以只将文件名保存在数据库中而不是完整路径吗?
如果不是,在视图中显示我的文件的最佳方式是什么?
当您从请求中检索文件时,这将被转换为 UploadedFile
对象。您可以按照以下方式轻松检索原始名称
$file = $request->display_profile;
$user->update([
'display_profile' => $file->getClientOriginalName()
]);
对于你的第二个问题,我建议你创建一个与 Image
class 的关系,你可以在其中存储你需要的所有图像转换。但这可能有点棘手,可能需要时间进行编码。幸运的是,有大量的库可以为您处理这个问题。我最喜欢的是 Laravel medialibrary
我主要使用这种方法:
$file = $request->file('display_profile');
$name = $file->getClientOriginalName() . '.' . $file->extension();
$file->storeAs('public/avatars', $name);
$user->update([
'display_profile' => $name
]);