laravel-admin的图片删除实例
对laravel-admin的图片上传机制有深深的疑惑,在用户信息页面上删除头像图片就会报错,当时用的是1.4的,后来更新1.5发现删除按钮直接消失了,在使用过程中,要是在form中正常使用image就好用,稍微写的复杂一点(比如我把$form->image写在tab里的时候)就不好用了。
针对这个问题写了一个方法,(也不知道适不适用哈)
false,'msg'=>trans('admin::lang.Upload_error'));
return$ajax?json_encode($data):$data;
}
//得到文件名称
$name=$file['name'];
$img_type=strtolower(substr($name,strrpos($name,'.')+1));//得到文件类型,并且都转化成小写
$allow_type=array('jpg','jpeg','gif','png');//定义允许上传的类型
//判断文件类型是否被允许上传
if(!in_array($img_type,$allow_type)){
$data=array('status'=>false,'msg'=>trans('admin::lang.imgtype_error').$img_type);
return$ajax?json_encode($data):$data;
}
//判断是否是通过HTTPPOST上传的
if(!is_uploaded_file($file['tmp_name'])){
$data=array('status'=>false,'msg'=>trans('admin::lang.post_img'));
return$ajax?json_encode($data):$data;
}
$file_name=$file_name?$file_name.'.'.$img_type:md5(uniqid()).Carbon::now()->timestamp.'.'.$img_type;
if($type=='attr_img'){
$upload_path=public_path().'/upload/goods/attr_img/';//上传文件的存放路径
$path="goods/attr_img/";
}elseif($type=='goods'){
$upload_path=public_path().'/upload/goods/';//上传文件的存放路径
$path="goods/";
}else{
$upload_path=public_path().'/upload/'.$type.'/';//上传文件的存放路径
$path=$type."/";
}
if(!is_dir($upload_path)){
@mkdir($upload_path);
}
//开始移动文件到相应的文件夹
if(move_uploaded_file($file['tmp_name'],$upload_path.$file_name)){
$data['status']=true;
$data['path']=$path.$file_name;
$data['view_path']=config('admin.upload.host').$path.$file_name;
}else{
$data=array('status'=>false,'msg'=>trans('admin::lang.moveimg_error'));
return$ajax?json_encode($data):$data;
}
if($ajax){
returnjson_encode($data);
}else{
return$data;
}
}
publicfunctionmultipleImg($type,$files,$ajax=true){
$imgs=array('status'=>true);
for($i=0;$iindex($type,$file,false);
if($data['status']){
$imgs['path'][$i]=$data['path'];
$imgs['view_path'][$i]=$data['view_path'];
}else{
return$ajax?json_encode(array('status'=>false,'msg'=>$data['msg'])):array('status'=>false,'msg'=>$data['msg']);
}
}
return$ajax?json_encode($imgs):$imgs;
}
}
然后在form中这么写:
$form->image('img','图片')->deleteUrl(admin_url('mconfig/deleteUrl/'.img))->uniqueName()->value('1.jpg');
//其中value是默认显示的图片,uniquename是使用随机生成的文件名,deleteUrl是删除图片的路径
再在form方法后新建方法,删除数据库里的数据
publicfunctiondeleteUrl($img){
$mconfig=MConfigModel::where('img',$img)->first();
$path=config('admin.upload.host').$mconfig->val;
if(file_exists($path)){
@unlink($path);
}
$mconfig->val="";
$mconfig->save();
returnarray('status'=>true);
}
最后别忘记添加相应的路由:
$router->put('/mconfig/deleteUrl/{img}','MConfigController@deleteUrl');
以上这篇laravel-admin的图片删除实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。