删除照片模块
This commit is contained in:
parent
f158d20e69
commit
7ff7e89e18
@ -8,16 +8,34 @@ $F = new Functions();
|
||||
/**
|
||||
* @var array $Normal 普通事件API
|
||||
* @var array $config 配置文件
|
||||
* @var array $ApiAlbum 图库API
|
||||
* @var array $ApiAlbumList 图库API
|
||||
*/
|
||||
|
||||
$ApiAlbum_url = $F->Current_HTTP().'/api/album/select_list.php?session='.$config['SESSION'];
|
||||
$ApiAlbumList_url = $F->Current_HTTP().'/api/album/select_list.php?session='.$config['SESSION'];
|
||||
$ApiAlbumList_ch = curl_init($ApiAlbumList_url);
|
||||
curl_setopt($ApiAlbumList_ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
|
||||
curl_setopt($ApiAlbumList_ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$ApiAlbumList = curl_exec($ApiAlbumList_ch);
|
||||
$ApiAlbumList = json_decode($ApiAlbumList,true);
|
||||
|
||||
$ApiAlbum_url = $F->Current_HTTP().'/api/album/select.php?session='.$config['SESSION'].'&album='.urldecode(htmlspecialchars($_GET['album']));
|
||||
$ApiAlbum_ch = curl_init($ApiAlbum_url);
|
||||
curl_setopt($ApiAlbum_ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
|
||||
curl_setopt($ApiAlbum_ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$ApiAlbum = curl_exec($ApiAlbum_ch);
|
||||
$ApiAlbum = json_decode($ApiAlbum,true);
|
||||
|
||||
// 筛查指定图库
|
||||
for ($i=0; $i<count($ApiAlbumList['data']); $i++) {
|
||||
if ($ApiAlbumList['data'][$i]['id'] == urldecode(htmlspecialchars($_GET['album']))) {
|
||||
$Album = $ApiAlbumList['data'][$i];
|
||||
}
|
||||
}
|
||||
|
||||
if ($Album['id'] == null) {
|
||||
header('location: ./album.php');
|
||||
}
|
||||
|
||||
$page = 2;
|
||||
?>
|
||||
<!doctype html>
|
||||
@ -49,14 +67,37 @@ $page = 2;
|
||||
<?php
|
||||
if (!empty($_COOKIE['user'])) {
|
||||
?>
|
||||
<div class="col-12 mb-3">
|
||||
<div class="card shadow-sm rounded-3 border-light" style="background-color: rgba(255,192,203,0.2); color: #ff8097">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-12 fs-3 fw-bold text-center">正在开发</div>
|
||||
</div>
|
||||
<div class="col-6 mb-3 text-start">
|
||||
<a href="./album_edit.php?album=<?php echo urldecode(htmlspecialchars($_GET['album'])) ?>" class="btn btn-outline-info text-center"><i class="bi bi-backspace"></i> 相册管理</a>
|
||||
</div>
|
||||
<div class="col-6 mb-3 text-end">
|
||||
<button class="btn btn-outline-danger text-center" data-bs-toggle="modal" data-bs-target="#DelPicture"><i class="bi bi-x-circle"></i> 确认删除</button>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<form method="post" action="" id="forms" onsubmit="return false">
|
||||
<div class="row">
|
||||
<?php
|
||||
for ($i=0; $i<count($ApiAlbum['data']); $i++) {
|
||||
?>
|
||||
<div class="col-6 mb-3">
|
||||
<div class="card shadow-sm rounded-3 border-light" style="background-color: rgba(255,192,203,0.2); color: #ff8097">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<img src="<?php echo $ApiAlbum['data'][$i]['url'] ?>!pw80" class="container-fluid" alt="">
|
||||
</div>
|
||||
<div class="col-4 text-center">
|
||||
<input class="form-check-input" type="checkbox" value="<?php echo $ApiAlbum['data'][$i]['id'] ?>" id="cbox[]" name="cbox[]">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<?php
|
||||
} else {
|
||||
@ -78,6 +119,23 @@ $page = 2;
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- DelPicture -->
|
||||
<div class="modal fade" id="DelPicture" tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5">删除所选图片</h1>
|
||||
</div>
|
||||
<div class="modal-body row">
|
||||
<div class="col-12">你确认是否删除所选图片嘛?这将会失去很久...很久......</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" id="button_cancel" class="btn btn-success" data-bs-dismiss="modal"><i class="bi bi-x-circle"></i> 取消删除</button>
|
||||
<button type="button" id="button_upload" class="btn btn-danger" onclick="delete_picture()"><i class="bi bi-trash"></i> 确认删除</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Toast -->
|
||||
<div class="toast-container position-fixed top-0 start-0 p-3">
|
||||
<div id="liveToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true">
|
||||
@ -98,16 +156,16 @@ $page = 2;
|
||||
<script type="text/javascript">
|
||||
const LiveToast = document.getElementById('liveToast')
|
||||
const toast = new bootstrap.Toast(LiveToast)
|
||||
function create()
|
||||
function delete_picture()
|
||||
{
|
||||
$.ajax({
|
||||
async: true,
|
||||
type: "POST",
|
||||
data: $('#forms').serialize(),
|
||||
url: "/plugins/album_list_check.php",
|
||||
url: "/plugins/picture_delete.php?album=<?php echo urldecode(htmlspecialchars($_GET['album'])) ?>",
|
||||
success: function(result) {
|
||||
if (result == 'SUCCESS') {
|
||||
$('#ajax_return').text('新建好了')
|
||||
$('#ajax_return').text('已删除!')
|
||||
toast.show()
|
||||
setTimeout(function () {
|
||||
window.location.reload()
|
||||
@ -115,6 +173,9 @@ $page = 2;
|
||||
} else if (result == 'UPLOAD_FAIL') {
|
||||
$('#ajax_return').text('新建失败')
|
||||
toast.show()
|
||||
}else if (result == 'IMAGE_SELECT') {
|
||||
$('#ajax_return').text('请选择图片')
|
||||
toast.show()
|
||||
} else if (result == 'OPEN_FALSE') {
|
||||
$('#ajax_return').text('是否开放啊?有问题')
|
||||
toast.show()
|
||||
|
119
api/album/delete_picture.php
Normal file
119
api/album/delete_picture.php
Normal file
@ -0,0 +1,119 @@
|
||||
<?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'])) {
|
||||
if (count($PostData['data']) > 0) {
|
||||
// 数据库查找
|
||||
$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);
|
||||
// 填写需要删除的多个文件完整路径。文件完整路径中不能包含Bucket名称。
|
||||
$objects = array();
|
||||
for ($i=0; $i<count($PostData['data']); $i++) {
|
||||
$Result_Picture = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['Album']." WHERE `id`='".$PostData['data'][$i]."'");
|
||||
$Result_Picture_Object = mysqli_fetch_object($Result_Picture);
|
||||
preg_match('/(?<=https:\/\/img.na-wen.love\/Upload\/'.$PostData['album'].'\/).*/',$Result_Picture_Object->url,$datas);
|
||||
$objects[] = "Upload/".$PostData['album']."/".$datas[0];
|
||||
mysqli_free_result($Result_Picture);
|
||||
mysqli_query($SqlConn,"DELETE FROM ".$config['TABLE']['Album']." WHERE `id`='".$Result_Picture_Object->id."'");
|
||||
}
|
||||
$result = $ossClient->deleteObjects($bucket, $objects);
|
||||
|
||||
foreach ($result as $info){
|
||||
$obj = strval($info);
|
||||
//printf("Delete ".$obj." : Success" . "\n");
|
||||
}
|
||||
// 输出结果
|
||||
$data = [
|
||||
'output' => 'SUCCESS',
|
||||
'code' => 200,
|
||||
'info' => '删除成功',
|
||||
];
|
||||
} 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' => 'IMAGE_SELECT',
|
||||
'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);
|
44
plugins/picture_delete.php
Normal file
44
plugins/picture_delete.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @var array $config
|
||||
*/
|
||||
|
||||
include $_SERVER['DOCUMENT_ROOT'].'/config.inc.php';
|
||||
|
||||
if (!empty($_COOKIE['user'])) {
|
||||
// 函数处理
|
||||
$PostUrl = 'https://www.na-wen.love/api/album/delete_picture.php';
|
||||
$data = [
|
||||
'session'=> $config['SESSION'],
|
||||
'album'=> (int)urldecode(htmlspecialchars($_GET['album'])),
|
||||
'data'=>$_POST['cbox'],
|
||||
];
|
||||
|
||||
$JsonStr = json_encode($data); //转换为json格式
|
||||
$PostData = http_post_json($PostUrl, $JsonStr);
|
||||
$PostData = json_decode($PostData,true);
|
||||
echo $PostData['output'];
|
||||
}
|
||||
|
||||
// 发送POST
|
||||
/**
|
||||
* @param $url
|
||||
* @param $jsonStr
|
||||
* @return bool|string
|
||||
*/
|
||||
function http_post_json($url, $jsonStr) {
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: application/json; charset=utf-8',
|
||||
'Content-Length: ' . strlen($jsonStr)
|
||||
)
|
||||
);
|
||||
$response = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
return $response;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user