Php 如何使用laravel中的控制器更新图像?
我想更新用户图像,但它没有得到更新。我使用了以下控制器来更新图像。。你能告诉我控制器的功能有什么错误吗 视图部分:Php 如何使用laravel中的控制器更新图像?,php,laravel,laravel-5,Php,Laravel,Laravel 5,我想更新用户图像,但它没有得到更新。我使用了以下控制器来更新图像。。你能告诉我控制器的功能有什么错误吗 视图部分: <div class="form-group"> <label>Image Upload</label> <input type="file" name="image" id="image"><img src="{{ asset('public/images/' . $cours
<div class="form-group">
<label>Image Upload</label>
<input type="file" name="image" id="image"><img src="{{ asset('public/images/' . $course->image) }}" width="200px"/></br>
</div>
您是否检查了“图像”目录的文件权限?上传文件需要有写权限 问题是
$data->image = $name;
您设置了值,但不将其保存在任何位置。您必须添加一个保存行
$data->save();
请注意,调用
update()
只保存作为参数传入的内容,而不保存通过mutators设置的内容。请注意,问题的错误/解决方法是首先存储更新值,然后保存新图像。所以我对控制器做了一些更改并解决了它
以下是控制器代码:
public function update(Request $request, $id)
{
$data=Course::findOrFail($id);
$data->update($request->all());
if ($request->hasFile('image'))
{
$file = $request->file('image');
$timestamp = str_replace([' ', ':'], '-', Carbon::now()->toDateTimeString());
$name = $timestamp. '-' .$file->getClientOriginalName();
$data->image = $name;
$file->move(public_path().'/images/', $name);
$data->save();
}
return redirect('course');
}
我已经用你的解决方案更新了这个问题,但仍然得到相同的错误。
public/images
目录的权限是什么?我如何检查权限?你到底得到了什么错误?我实际上无法更新。。我得到了。。。到底是什么错误?就像错误说什么lol…伙计..它没有显示任何错误..只是数据没有更新lol!我懂了。那很有帮助。你得做一些自我调试然后。。。使用dd($variable),确保文件正在到达服务器
必要时,可以在update()
函数中的某个地方添加try{}catch(){}
,等等。否则很难说出哪里出了问题。
public function update(Request $request, $id)
{
$data=Course::findOrFail($id);
$data->update($request->all());
if ($request->hasFile('image'))
{
$file = $request->file('image');
$timestamp = str_replace([' ', ':'], '-', Carbon::now()->toDateTimeString());
$name = $timestamp. '-' .$file->getClientOriginalName();
$data->image = $name;
$file->move(public_path().'/images/', $name);
$data->save();
}
return redirect('course');
}