[英]How do I delete and update a photo in Laravel 4?
在我的应用程序中,用户可以上传个人资料照片的图像。 如何更新用户照片并删除以前上传的照片? 这是我到目前为止在上传控制器中拥有的:
照片模型
class Photos extends Eloquent {
protected $table = 'photos';
protected $fillable = array('user_id', 'location');
public function user (){
return $this->belongsTo('User');
}
}
用户模型
public function photos()
{
return $this->hasOne('photos');
}
上传控制器
class UploadController extends \BaseController {
public function postUpload (){
$id = Auth::user()->id;
$input = Input::all();
$rules = array(
'photo' => 'required|image|max:500'
);
$validator = Validator::make($input, $rules);
if($validator->fails()){
return Redirect::to('user/profile/'.$id.'/edit')->withErrors($validator);
}
$extension = Input::file('photo')->getClientOriginalExtension();
$directory = public_path('/var/chroot/home/content/59/11581559/html/beta') . '/uploads/'.sha1($id);
$filename = sha1($id.time()).".{$extension}";
$upload_success = Input::file('photo')->move($directory, $filename);
Image::make(Input::file('photo')->getRealPath())->resize(300, 200)->save('foo.jpg');
if($upload_success){
$photo = new Photos(array(
'location' => URL::to('/uploads/'.sha1($id).'/'.$filename)
));
$photo->user_id = $id;
$photo->save();
Session::flash('success_photo', 'You have Successfully uploaded your profile photo!');
return Redirect::to('user/profile/'.$id.'/edit');
}
else{
Session::flash('status_error', 'An Error has occurred while uploading your photo. Please try again!');
}
return Redirect::to('user/profile/'.$id.'/edit');
}
}
视图
<div class="col-lg-3">
<div class="panel panel-default">
<div class="panel-heading">
@if(Session::has('status_error'))
<div class="alert alert-error">
<a class="close" data-dismiss="alert" href="#" aria-hidden="true">×</a>
{{ implode('', $errors->all('<li class="error"><b>:status_error</b></li>')) }}
</div>
@endif
<span class="glyphicon glyphicon-exclamation-sign"></span> Upload a Photo
</div>
<div class="panel-body text-center">
@if($user->photos)
<img width="190" height="119" class="img-responsive img-thumbnail" src="{{$user->photos->location }}" alt="">
@endif
<div class="clearfix"></div>
<div class="btn-group mtop-20">
<button type="button" class="btn btn-primary" onclick="$('#upload_modal').modal({backdrop:'static'});">
<span class="glyphicon glyphicon-upload"></span>
</button>
</div>
</div>
<?php echo View::make('modals.photo-upload') ?>
</div><!-- end panel-default -->
</div><!-- col 3-->
让我们谈谈您在做什么以及从那里开始工作。
上传照片 -在您的控制器中,您正在上传照片。 -如果上传成功,则将在服务器上存储照片的位置以及照片所属的用户的ID。
更新照片 -在您的控制器中,您正在上传照片。 -如果上传成功,您将执行以下操作:
获取当前文件在数据库中的位置。
$this->photo->where('user_id' , '=' , $the_user_id_in_question) ->get(array('location'));
使用FileSystem类中的delete()
函数delete()
该位置处的文件(位于此处: https : //github.com/laravel/framework/blob/master/src/Illuminate/Filesystem/Filesystem.php )
用新的位置更新用户的照片位置:
$this->photo->where('user_id' , '=' , $the_user_id_in_question) ->update('location' => $the_new_upload_location);
我希望这就是您想要的。 干杯!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.