【发布时间】:2017-11-24 08:07:40
【问题描述】:
我做了一个方法,允许用户更新他们的个人资料图片。我还添加了一个功能,如果他们更新到新的个人资料图片,它会删除他们的旧个人资料图片。但我收到一条错误消息,提示 Call to undefined method Intervention\Image\File::delete()。
这是什么原因造成的?在下面的代码中,它对我来说非常有意义。我希望你们能提供帮助。提前致谢
代码: 用户控制器.php
public function update_avatar(Request $request) {
$this->middleware('auth');
if ($request->hasFile('avatar')) {
$avatar = $request->file('avatar');
$filename = Auth::user()->username . time() . '.' . $avatar->getClientOriginalExtension();
Image::make($avatar)->fit(300,300)->save( public_path('/uploads/avatars/' . $filename));
$user = Auth::user();
$user->avatar = $filename;
$user->save();
//Verwijderd vorige foto
if ($user->avatar != 'default.jpg') {
$path = 'uploads/avatars/';
$lastpath = Auth::user()->Avatarpath;
File::delete(public_path($path . $lastpath));
}
}
return view('user.profile', array('user' => Auth::user()));
路线:Route::post('{username}/profile', 'UserController@update_avatar');
应该执行此操作的表单。
<div class="row">
<div class="col l12 m12 s12">
<div class="card">
<div class="card-content">
<form enctype="multipart/form-data" action="profile" method="POST">
<input type="file" name="avatar">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input type="submit" class="pull-right btn btn-primary" value="Change profile">
</form>
</div>
</div>
</div>
</div>
更改图片效果很好。如果我重新加载页面,个人资料图片会更新,但不会删除旧的。
【问题讨论】:
-
尝试打印 $lastpath 以查看它是否包含 / infront 然后您需要将其删除,否则在连接 'uploads/avatars//someath 时会发生
-
@Exprator 我在定义 $lastpath 的代码之后添加了一个
dd($lastpath),但是在我尝试了 Dharmesh 发送的代码之后,它只是刷新了页面。甚至无需更改个人资料图片
标签: php laravel laravel-5 laravel-5.2