NW_love/api/album/delete_album.php
2023-02-03 15:17:41 +08:00

147 lines
5.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* nw_love API
* @copyright 2022-2023 ZCW and YN. All Rights Reserved.
*/
/**
* @var mysqli $SqlConn 数据库链接信息
* @var array $config 设置相关的数据
*/
require_once $_SERVER['DOCUMENT_ROOT'].'/Aliyun/aliyun-oss-php-sdk-2.6.0.phar';
require_once $_SERVER['DOCUMENT_ROOT'].'/Aliyun/autoload.php';
use OSS\OssClient;
use OSS\Core\OssException;
// 载入前置组件
include $_SERVER['DOCUMENT_ROOT'] . "/api/api-loader.php";
// 载入类
require_once $_SERVER['DOCUMENT_ROOT'] . '/api/modules/ApiFunction.php';
$AFT = new ApiFunction();
// 获取参数
// POST
$PostData = file_get_contents('php://input');
$PostData = json_decode($PostData,true);
// 逻辑构建
if ($AFT->Get_Session($PostData['session'])) {
if (preg_match('/[0-9]+$/',$PostData['album'])) {
// 数据库查找
$Result_Album = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['AlbumList']." WHERE `id`='".$PostData['album']."'");
$Result_Album_Object = mysqli_fetch_object($Result_Album);
// 确认数据
if ($Result_Album_Object->id != null) {
// 处理OSS
// 阿里云主账号AccessKey拥有所有API的访问权限风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维请登录RAM控制台创建RAM用户。
$accessKeyId = $config['Aliyun']['AccessKeyID'];
$accessKeySecret = $config['Aliyun']['AccessKeySecret'];
// Endpoint以华东1杭州为例其它Region请按实际情况填写。
$endpoint = "https://oss-cn-shenzhen-internal.aliyuncs.com";
// 填写Bucket名称。
$bucket= "nw-love";
try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
$option = array(
OssClient::OSS_MARKER => null,
// 填写待删除目录的完整路径完整路径中不包含Bucket名称。
OssClient::OSS_PREFIX => "Upload/".$PostData['album']."/",
);
$bool = true;
while ($bool){
$result = $ossClient->listObjects($bucket,$option);
$objects = array();
if(count($result->getObjectList()) > 0){
foreach ($result->getObjectList() as $key => $info){
printf("key name:".$info->getKey().PHP_EOL);
$objects[] = $info->getKey();
}
// 删除目录及目录下的所有文件。
$delObjects = $ossClient->deleteObjects($bucket, $objects);
foreach ($delObjects as $info){
$obj = strval($info);
printf("Delete ".$obj." : Success" . PHP_EOL);
}
}
if($result->getIsTruncated() === 'true'){
$option[OssClient::OSS_MARKER] = $result->getNextMarker();
}else{
$bool = false;
}
}
// 执行数据库删除
// 载入图片库
$Result_Picture = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['Album']." WHERE `album_id`='".$PostData['album']."'");
while ($Result_Picture_Object = mysqli_fetch_object($Result_Picture)) {
if (!mysqli_query($SqlConn,"DELETE FROM ".$config['TABLE']['Album']." WHERE `id`='".$Result_Picture_Object->id."'")) {
// 输出结果
$data = [
'output' => 'DATA_DELETE_FAIL',
'code' => 403,
'info' => '数据库删除失败',
];
header('HTTP/1.1 403 Forbidden');
}
}
if (mysqli_query($SqlConn,"DELETE FROM ".$config['TABLE']['AlbumList']." WHERE `id`='".$PostData['album']."'")) {
// 输出结果
$data = [
'output' => 'SUCCESS',
'code' => 200,
'info' => '数据全部删除',
];
} else {
// 输出结果
$data = [
'output' => 'DATA_DELETE_FAIL',
'code' => 403,
'info' => '数据库删除失败',
];
header('HTTP/1.1 403 Forbidden');
}
} catch (OssException $e) {
// 输出结果
$data = [
'output' => 'ALIYUN_DELETE_FAIL',
'code' => 403,
'info' => '远端删除失败',
];
header('HTTP/1.1 403 Forbidden');
return;
}
} else {
// 输出结果
$data = [
'output' => 'ALBUM_NONE',
'code' => 403,
'info' => '没有这个图库',
];
header('HTTP/1.1 403 Forbidden');
}
} else {
// 输出结果
$data = [
'output' => 'ALBUM_FALSE',
'code' => 403,
'info' => '图库编号不符合标准',
];
header('HTTP/1.1 403 Forbidden');
}
} else {
// 输出结果
$data = [
'output' => 'SESSION_DENY',
'code' => 403,
'info' => '参数 Post[session] 缺失/错误',
];
header('HTTP/1.1 403 Forbidden');
}
echo json_encode($data, JSON_UNESCAPED_UNICODE);