·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室
12下一页
返回列表 发布新帖

分享一个帝国CMS管理七牛附件的功能

83 11
发表于 4 小时前 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
分享一个帝国CMS管理七牛附件的功能,页面渲染图如下:

1,首先去七牛去下载他们的php的SDK包。(不知道是不是我的宝塔问题,Composer我选择阿里云会出错,建议腾讯云)
2,因为远程读取要进行分页,占用资源超大(必须安装个Redis。让非第一次加载没有那么卡顿)

废话说完了,开始上代码。不知道能不能发成功。毕竟4414的防火墙要扯淡的
<?php
define('EmpireCMSAdmin','1');
require("../../../class/connect.php");
require("../../../class/db_sql.php");
require("../../../class/functions.php");
require("../../../member/class/user.php");
require '../../'.LoadLang('pub/fun.php');
require ECMS_PATH.'e/extend/Qiniu/autoload.php';//七牛
require ECMS_PATH.'e/extend/Qiniu/qiniu_conf.php';//七牛
$link=db_connect();
$empire=new mysqlquery();
$editor=2;
//验证用户
$lur=is_login();
$logininid=$lur['userid'];
$loginin=$lur['username'];
$loginrnd=$lur['rnd'];
$loginlevel=$lur['groupid'];
$loginadminstyleid=$lur['adminstyleid'];
//ehash
$ecms_hashur=hReturnEcmsHashStrAll();
//验证权限
$classid=isset($classid)?$classid:null;
CheckLevel($logininid,$loginin,$classid,"template");
$enews=$_POST['enews'];
// 文件大小转换函数
function formatFileSize($bytes) {
if ($bytes < 1024) {
return $bytes. ' B';
} elseif ($bytes < 1024 * 1024) {
return round($bytes / 1024, 2). ' K';
} elseif ($bytes < 1024 * 1024 * 1024) {
return round($bytes / (1024 * 1024), 2). ' M';
} else {
return round($bytes / (1024 * 1024 * 1024), 2). ' G';
}
}
$Auth = new \Qiniu\Auth($QiniuConf['ak'],$QiniuConf['sk']);
$bucketMgr = new \Qiniu\Storage\BucketManager($Auth);
// 删除文件的函数
function deleteFile($bucketMgr, $bucket, $key) {
list($ret, $err) = $bucketMgr->delete($bucket, $key);
if ($err!== null) {
return ['success' => false,'message' => "删除文件失败: ". $err->message()];
}
return ['success' => true,'message' => "文件删除成功!"];
}
// 处理删除请求
if (isset($_GET['action']) && $_GET['action'] === 'delete' && isset($_GET['key'])) {
$key = $_GET['key'];
$result = deleteFile($bucketMgr, $QiniuConf['bucket'], $key);
if ($result['success']) {
printerror('删除成功','../../extend/Qiniu/index.php',0,0,1);
exit;
} else {
printerror('删除失败','../../extend/Qiniu/index.php',0,0,1);
}
}
// 获取当前页码
$page = (int)$_GET['page'];
$start = 0;
$line = 20; // 每页显示条数
$page_line = 18; // 每页显示链接数
$offset = $page * $line; // 总偏移量
$prefix = isset($_GET['prefix']) ? $_GET['prefix'] : '';// 根据查询条件和分页参数生成缓存键
$cacheKey = 'qiniu_file_list_' . md5($prefix. '_page_' . $page. '_line_' . $line);
$cachedData = $redis->get($cacheKey);// 尝试从 Redis 中获取缓存数据
if ($cachedData!== false) {
$data = json_decode($cachedData, true);
if ($data && isset($data['currentPageItems'], $data['imageCount'], $data['audioVideoCount'], $data['archiveCount'], $data['num'])) {
$currentPageItems = $data['currentPageItems'];
$imageCount = $data['imageCount'];
$audioVideoCount = $data['audioVideoCount'];
$archiveCount = $data['archiveCount'];
$num = $data['num'];
} else {
$cachedData = false;
}
}
if ($cachedData === false) {
$bucket = $QiniuConf['bucket'];// 存储空间名称
$marker = '';// 列举文件的起始标记,首次列举时为空
$delimiter = '';// 列举文件的分隔符,若为空则不进行分隔
$imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp'];
$audioVideoExtensions = ['mp3', 'wav', 'avi', 'mp4', 'mov'];
$archiveExtensions = ['zip', 'rar'];
// 初始化计数器
$imageCount = 0;
$audioVideoCount = 0;
$archiveCount = 0;
$totalItems = [];
$limit = 50; // 每次获取 50 条记录
do {
list($ret, $err) = $bucketMgr->listFiles($bucket, $prefix, $marker, $limit, $delimiter);
if ($err!== null) {
echo "列举文件失败: ". $err->message();
break;
}
foreach ($ret['items'] as $item) {
// 判断是否为文件夹,这里以文件大小不为 0 且文件名不以 / 结尾作为判断依据
if ($item['fsize'] > 0 && substr($item['key'], -1)!== '/') {
$totalItems[] = $item;
$extension = pathinfo($item['key'], PATHINFO_EXTENSION);// 获取文件扩展名
$extension = strtolower($extension);
// 根据扩展名进行分类统计
if (in_array($extension, $imageExtensions)) {
$imageCount++;
} elseif (in_array($extension, $audioVideoExtensions)) {
$audioVideoCount++;
} elseif (in_array($extension, $archiveExtensions)) {
$archiveCount++;
}
}
}
$marker = isset($ret['marker']) ? $ret['marker'] : '';
} while ($marker!== '');
$num = count($totalItems);
$currentPageItems = array_slice($totalItems, $offset, $line); // 截取当前页需要显示的文件
$data = [
'currentPageItems' => $currentPageItems,
'imageCount' => $imageCount,
'audioVideoCount' => $audioVideoCount,
'archiveCount' => $archiveCount,
'num' => $num
];
$redis->setex($cacheKey, 3600, json_encode($data));
}
$search = '';
$returnpage = page2($num, $line, $page_line, $start, $page, $search);
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>七牛云配置管理</title>
<link href="../../adminstyle/<?=$loginadminstyleid?>/adminstyle.css" rel="stylesheet" type="text/css">
<style type="text/css">
form{margin:0;padding:0}
分享一个帝国CMS管理七牛附件的功能
我要说一句 收起回复

评论11

婷姐楼主Lv.8 发表于 4 小时前 | 查看全部
这社区不行 发不了代码 会被宝塔的防火墙屏蔽
我要说一句 收起回复
拾光Lv.8 发表于 4 小时前 | 查看全部
主要的是有了  后面要获取七牛的列表进行遍历就可以了!在试试能不能发代码
我要说一句 收起回复
IT618发布Lv.8 发表于 4 小时前 | 查看全部
还是不行 太差劲了 我在自己的网站上面写吧。不会屏蔽代码的。
我要说一句 收起回复
TyCodingLv.8 发表于 4 小时前 | 查看全部
4414服务器的宝塔会拦截。只能首发到自己的网站。https://www.wenyunfang.com/zazhi/zhongwangjiaocheng/1257.html
我要说一句 收起回复
婷姐楼主Lv.8 发表于 4 小时前 | 查看全部
你不能上传到网盘再分享呀。
我要说一句 收起回复
独家记忆Lv.8 发表于 4 小时前 | 查看全部
大神有没有研究帝国8.0总父子信息新功能
我要说一句 收起回复
浅生Lv.8 发表于 4 小时前 | 查看全部
自己到我网站复制也是可以的啊!我都不用网盘的。关注公众号获取密码 就能完美的进行复制了。又不要钱的。主要是4414的宝塔拦截了什么
我要说一句 收起回复
TyCodingLv.8 发表于 4 小时前 | 查看全部
厉害了
我要说一句 收起回复
IT618发布Lv.8 发表于 4 小时前 | 查看全部
8.0没有出新的更新包没有研究!说实话那个父子信息你还不如用东坡那个更强大更方便
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.217.166.156,GMT+8, 2025-3-1 20:58 , Processed in 0.335864 second(s), 122 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表