首先去github下载阿里云的sdk
https://github.com/aliyun/aliyun-oss-php-sdk?spm=a2c4g.11186623.2.5.2bbfc839lk5fQn
示例地址
https://help.aliyun.com/document_detail/32105.html?spm=a2c4g.11186623.6.751.2bbfc839lk5fQn
根据前面的文章,已经在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);
}
// 去掉数组中的当前值
for(var i in fileNames) {
if(fileNames[i] == currentFileName) {
fileNames.splice(i,1);
break;
}
}
$.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)
}
});
})
}
})