laravel 刪除阿里雲oss圖片
阿新 • • 發佈:2018-12-27
首先去github下載阿里雲的sdk
示例地址
根據前面的文章,已經在libs下有一個Aliyunoss.php檔案了, 在那個基礎上增加刪除檔案
首先判斷是否c'za存在
/** * 判斷是否存在於oss * filename 需要帶dir */ public function is_exist_oss($filename) { try{ $ossClient = new OssClient($this->id, $this->key, $this->endpoint); $exist = $ossClient->doesObjectExist($this->bucket, $filename); if($exist) { return true; } else { return false; } } catch(OssException $e) { return false; } }
執行刪除操作
/** * 判斷是否存在於oss * filename 需要帶dir */ public function delete_oss($filename) { $has_oss = $this->is_exist_oss($filename); if($has_oss) { try{ $ossClient = new OssClient($this->id, $this->key, $this->endpoint); $ossClient->deleteObject($this->bucket, $filename); return true; } catch(OssException $e) { return false; } } }
後臺介面
public function aliyun_delete(Request $request) { $filename = $request->input('filename'); if(!empty($filename)) { $aliyunoss = new Aliyunoss(); $aliyunoss->delete_oss($filename); return json_encode(['msg' => 'success']); } else { return json_encode(['msg' => 'fail']); } }
再在upload.js中做刪除操作
// 刪除
$('.media-picker').each(function() {
var el = $(this)
var inputField = el.find('input[type=hidden]');
var fileName = inputField.val();
var elbtn = el.find('.media-picker-button');
var multi_selection = false;
// 是否多檔案上傳
if(elbtn.attr('data-multiple') == 'multiple') {
multi_selection = true;
}
if(multi_selection) {
el.on('click', '.delete-image', function() {
var elDel = $(this);
// 得到filename
var currentFileName = elDel.prev('p').html();
// 刪除當前的父級li
elDel.parent().parent().remove();
// 重新賦值陣列
var fileNames = new Array();
if(g_object_names != '') {
fileNames = g_object_names;
} else {
fileNames = $.parseJSON(fileName);
}
// 去掉陣列中的當前值
fileNames.pop(currentFileName);
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
});
$.ajax({
type: "POST",
url: baseBackend + "backend/deleteoss",
data: "filename=" + currentFileName,
success: function(msg){
console.log(msg)
}
});
inputField.val( JSON.stringify(fileNames));
})
} else {
el.on('click', '.delete-image', function() {
// 顯示值為空
el.find('.medias-list ul').html('');
inputField.val('');
// oss刪除
if(g_object_name != '') {
fileName = g_object_name;
}
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
});
$.ajax({
type: "POST",
url: baseBackend + "backend/deleteoss",
data: "filename=" + fileName,
success: function(msg){
console.log(msg)
}
});
})
}
})