laravel-admin的圖片刪除實(shí)例
對(duì)laravel-admin的圖片上傳機(jī)制有深深的疑惑,在用戶信息頁(yè)面上刪除頭像圖片就會(huì)報(bào)錯(cuò),當(dāng)時(shí)用的是1.4的,后來(lái)更新1.5 發(fā)現(xiàn)刪除按鈕直接消失了,在使用過(guò)程中,要是在form中正常使用image就好用,稍微寫(xiě)的復(fù)雜一點(diǎn)(比如我把$form->image寫(xiě)在tab里的時(shí)候)就不好用了。
針對(duì)這個(gè)問(wèn)題寫(xiě)了一個(gè)方法,(也不知道適不適用哈)
<?php
namespace App\Admin\Controllers;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Encore\Admin\Controllers\ModelForm;
use Encore\Admin\Form\Field\File;
use Illuminate\Http\UploadedFile;
class FileController extends Controller
{
use ModelForm;
public function index($type,$file=null,$ajax=true,$file_name="")
{
$file = $file ? $file : $_FILES['img'];
if($file['error']!=0){
$data = array('status'=>false,'msg'=>trans('admin::lang.Upload_error'));
return $ajax ? json_encode($data) : $data;
}
//得到文件名稱
$name = $file['name'];
$img_type = strtolower(substr($name,strrpos($name,'.')+1)); //得到文件類(lèi)型,并且都轉(zhuǎn)化成小寫(xiě)
$allow_type = array('jpg','jpeg','gif','png'); //定義允許上傳的類(lèi)型
//判斷文件類(lèi)型是否被允許上傳
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;
}
//判斷是否是通過(guò)HTTP POST上傳的
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);
}
//開(kāi)始移動(dòng)文件到相應(yīng)的文件夾
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){
return json_encode($data);
}else{
return $data;
}
}
public function multipleImg($type,$files,$ajax=true){
$imgs = array('status'=>true);
for($i=0;$i<count($files['name']);$i++){
$file['name'] = $files['name'][$i];
$file['type'] = $files['type'][$i];
$file['tmp_name'] = $files['tmp_name'][$i];
$file['error'] = $files['error'][$i];
$file['size'] = $files['size'][$i];
$data = $this->index($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中這么寫(xiě):
$form->image('img','圖片')->deleteUrl(admin_url('mconfig/deleteUrl/' . img))->uniqueName()->value('1.jpg');
//其中value是默認(rèn)顯示的圖片,uniquename是使用隨機(jī)生成的文件名,deleteUrl是刪除圖片的路徑
再在form方法后新建方法,刪除數(shù)據(jù)庫(kù)里的數(shù)據(jù)
public function deleteUrl($img){
$mconfig = MConfigModel::where('img',$img)->first();
$path = config('admin.upload.host').$mconfig->val;
if(file_exists($path)){
@unlink ($path);
}
$mconfig->val = "";
$mconfig->save();
return array('status'=>true);
}
最后別忘記添加相應(yīng)的路由:
$router->put('/mconfig/deleteUrl/{img}','MConfigController@deleteUrl');
以上這篇laravel-admin的圖片刪除實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
php curl請(qǐng)求接口并獲取數(shù)據(jù)的示例代碼
本篇文章主要介紹了php curl請(qǐng)求接口并獲取數(shù)據(jù)的示例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-08-08
PHP實(shí)現(xiàn)權(quán)限管理功能示例
下面小編就為大家?guī)?lái)一篇PHP實(shí)現(xiàn)權(quán)限管理功能示例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
laravel接管Dingo-api和默認(rèn)的錯(cuò)誤處理方式
今天小編就為大家分享一篇laravel接管Dingo-api和默認(rèn)的錯(cuò)誤處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10
php getcwd與dirname(__FILE__)區(qū)別詳解
這篇文章主要介紹了php getcwd與dirname(__FILE__)區(qū)別詳解的相關(guān)資料,需要的朋友可以參考下2016-09-09
PHP 獲取視頻時(shí)長(zhǎng)的實(shí)例代碼
本文通過(guò)實(shí)例代碼給大家介紹了php獲取視頻時(shí)長(zhǎng)的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07
php筆記之:php函數(shù)range() round()和list()的使用說(shuō)明
本篇文章介紹了,php函數(shù)range() round()和list()的使用說(shuō)明。需要的朋友參考下2013-04-04
ThinkPHP5+UEditor圖片上傳到阿里云對(duì)象存儲(chǔ)OSS功能示例
這篇文章主要介紹了ThinkPHP5+UEditor圖片上傳到阿里云對(duì)象存儲(chǔ)OSS功能,結(jié)合實(shí)例形式分析了ThinkPHP5使用富文本編輯器UEditor實(shí)現(xiàn)圖片上傳到阿里云的相關(guān)操作技巧,需要的朋友可以參考下2019-08-08
ThinkPHP框架分布式數(shù)據(jù)庫(kù)連接方法詳解
這篇文章主要介紹了ThinkPHP框架分布式數(shù)據(jù)庫(kù)連接方法,結(jié)合實(shí)例形式詳細(xì)分析了thinkPHP框架針對(duì)分布式數(shù)據(jù)庫(kù)的連接方法、操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-03-03
AES加解密在php接口請(qǐng)求過(guò)程中的應(yīng)用示例
在我們的編程的過(guò)程中,經(jīng)常會(huì)遇到加密的情況,怎么才會(huì)合理運(yùn)用,本篇文章主要介紹了AES加解密在php接口請(qǐng)求過(guò)程中的應(yīng)用示例,有需要的可以了解一下。2016-10-10

