database - 我正在尝试将图像上传到我在 laravel 中的目录(通过数据库访问它们)
问题描述
所以我查看了互联网和 StackOverflow 上的多篇文章,但我无法弄清楚。因此,当您制作new user
表格时,您的表格列中不会有图像,您可以在您的个人资料设置中进行编辑。所以现在我正在尝试将图像添加到directory
,database
但我并没有让它太有效。我avatar
在数据库中添加了一个(代表图像名称)为medium text
.
我的表格
<form action="updateImage" method="post" enctype="multipart/form-data">
@csrf
<div class="modal-body">
<label for="image" class="custom-image">
<i class="fa fa-cloud-upload"></i> Select a file
</label>
<input id="image" type="file"/>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Save changes</button>
</div>
</form>
我的控制器
public function updateImage(Request $request)
{
$avatar = Auth::user()->id;
if($request->hasfile('image'))
{
$file = $request->file('image');
$extension = $file->getClientOriginalExtension();
$filename = $file->getClientOriginalName();
$file->move('uploads/face/', $filename);
$avatar->avatar = $filename;
}
$avatar->save();
return view('profile');
}
我的路线
Route::post('/updateImage', 'HomeController@updateImage')->middleware('user');
我已经看了很多帖子,但仍然找不到解决方案。对我放轻松<3。
解决方案
您尝试$avatar
在 Auth::user() (一个类)的属性上调用 save 方法,这只是用户的 ID。如果您无法理解如何保存 eloquent 模型,请查看此处的文档。
我也不太明白是什么$face
,因为您从未定义过该变量,但您正在尝试对其调用方法。
您可能甚至不需要再次保存用户对象,因为您只是在更新图像。相反,您可以将文件保存在与用户唯一标识符对应的目录中。就像是:
if($request->hasfile('image'))
{
$file = $request->file('image');
$extension = $file->getClientOriginalExtension();
$filename = $file->getClientOriginalName();
$file->move('uploads/face/'.Auth::id().'/', $filename . $extension);
}
第一次上传可以正常工作。对于其他上传,您必须检查用户是否已有头像,然后删除该文件并用新文件替换它。
如果您想将文件名保存为数据库中用户的属性,则必须首先更新迁移以添加该文件名的属性。然后是这样的:
$filename;
if($request->hasfile('image'))
{
$file = $request->file('image');
$extension = $file->getClientOriginalExtension();
$filename = $file->getClientOriginalName();
$file->move('uploads/face/', $filename . $extension);
}
$user = Auth::user();
$user->avatar = $filename;
$user->save();
可以正常工作。
希望这可以帮助。我建议观看 Laravel 的视频教程,因为这些对我有很大帮助。
推荐阅读
- python - 如何通过枚举检索枚举元组列表的元素?
- reactjs - 在 test 和 qa 中部署 env 文件
- api - 登录 rundeck 时允许 api 请求 (ajax)
- python - Spark DAG 与“withColumn”和“select”不同
- scipy - norm.ppf() 方法不应该只给出正输出吗?
- python - 标签 { serve } 的 SavedModel 加载;状态:失败:无效参数:在 MakeCallable() 之前未使用图形创建会话
- ggplot2 - 我们可以在闪亮的仪表板中使用 rbind_gtable 绑定三个图以将所有图一起下载吗?
- regex - 正则表达式的最佳字符串比较算法
- php - PHP使用正斜杠获取参数
- c++ - 仅在部分专业化中提供方法