彩虹外链网盘二开美化版惜染

彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染

彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染

项目介绍

彩虹外链网盘是一款基于 PHP 开发的网盘与外链分享程序,支持多种类型文件上传,并可生成对应的外链地址,适用于文件分享、图床、音视频外链等多种使用场景。

本项目是在开源版本基础上进行二次开发与界面美化的版本,保留了原有核心功能,并在外观、用户体系、付费权限、邮件通知等方面做了扩展。

功能一览

文件与外链

  • 支持所有常见格式文件上传,可多选批量上传、Ctrl+V 粘贴上传、拖拽上传
  • 生成文件外链、图片外链、音乐外链、视频外链,并同时给出 UBB 代码和 HTML 代码
  • 文本、图片、音乐、视频在线预览,TXT 等文本内容在线查看
  • 文件内容在线编辑,支持 txtmdjsonjscsshtmlxmlsvgcsviniconfyamlsqlvuetsjsx 等格式,可限定所有人 / 仅登录用户 / 仅指定 UID 使用
  • 覆盖上传:用新文件替换已有文件,对外链接保持不变
  • 上传时可设置访问密码、可选择是否在首页文件列表公开
  • 文件列表支持关键字搜索、按类型筛选(图片 / 视频 / 音频 / 文档 / 压缩包),加密文件带锁形标记
  • 列表可按上传时间或文件大小正反排序(?sort=new|old|big|small),部分外观下还能在列表和网格视图之间切换
  • 可作为网盘使用,也可作为图床或音乐在线试听网站使用

用户与登录

  • QQ / 微信快捷登录
  • 邮箱注册与登录:填邮箱收验证码即可注册,支持算术验证码
  • 一个账号多种登录方式:邮箱账号可绑定 QQ / 微信,快捷登录账号可绑定邮箱并设置密码,注册时用的那种方式不可解绑
  • 个人中心:概览、我的文件、订单记录、账号设置四个页签,文件可重命名、设访问密码、切公开私密、单个与批量删除、复制外链
  • 用户管理:可区分普通 / 高级用户,单独设置每日上传数量、单文件大小、权限有效期,支持封禁、解封、查看用户文件、删除用户

付费与运营

  • 购买权限:把上传额度做成套餐出售,付款成功后权限立即生效
  • 支付宝当面付、易支付两种收款方式,可只开一种或同时开启
  • 订单记录:按状态筛选、查看累计金额、补发权限、清理未支付订单
  • 赞助页与赞助名单

邮件

  • 四种发信通道可选:SMTP、Resend、Brevo、SendGrid,可同时勾选多个
  • 后台一键测试发信,失败时显示具体原因
  • 发信记录:每封验证码邮件的发送结果、通道、来源都有据可查

存储与安全

  • 支持本地存储及阿里云 OSS、腾讯云 COS、华为云 OBS、又拍云、七牛云、通用 S3 兼容存储、WebDAV、OneDrive、OpenList
  • 存储类型设置改为卡片式:一眼看清每种存储支持直传 / 直链 / 断点续传,卡片上还标出每个存储里压着多少文件,并可一键做连接测试(用当前填写的参数测,不必先保存)
  • 有文件之后也能换存储:每个文件记着自己存在哪儿,切换只影响之后的新上传,已上传的文件照常能下、外链不失效
  • 可同时开放多个存储:上传页出现「存储位置」下拉让用户自己挑,每个存储还能限定所有人 / 仅登录用户 / 仅高级用户可用
  • 图片违规检测,可对接阿里云 / 腾讯云内容安全,也可用自建服务在本机跑模型(文件不出服务器、没有调用费)
  • 视频违规检测(自建服务):ffmpeg 抽帧逐帧判分,上传后先挂起、检测完自动放行或封禁,后台能看命中了哪几帧
  • 违规文件公示,向访客公开已封禁文件的处理情况
  • 覆盖记录审计,管理员可复查每一次内容替换
  • 每日上传数量与每分钟上传次数限制

界面

  • 28 套外观:15 套配色型 + 13 套布局型,前台、后台、公告条、赞助页、弹窗全部联动;每套外观还能在后台单独换整套配色(挑个主色,全站颜色跟着走)
  • 广告公告位设置,可自定义顶部公告与首页广告位
  • 手机端适配

界面预览

前台

登录与注册

彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染

购买权限页

彩虹外链网盘二开美化版惜染

个人中心

彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染

后台

一级菜单收成「首页 / 文件 / 用户 / 设置 / 退出」五项,「设置」下拉再按「站点 / 上传与存储 / 用户与付费 / 安全与合规 / 其它」分组,不用在十几个二级页面里翻找。侧栏型外观(控制台侧栏风 / 数据控制台风 / 深色工作台风 / 渐变仪表盘风,以及工作台家族里除云端门户风外的六套)下这些分组 是常驻展开的静态列表,不需要点开;云端门户风前台是顶部横向导航,后台也保持顶栏。

后台首页

彩虹外链网盘二开美化版惜染

文件管理

彩虹外链网盘二开美化版惜染

用户管理

彩虹外链网盘二开美化版惜染

覆盖记录

彩虹外链网盘二开美化版惜染

存储类型设置

彩虹外链网盘二开美化版惜染

内容检测设置

彩虹外链网盘二开美化版惜染

内容检测记录

彩虹外链网盘二开美化版惜染

外观设置

彩虹外链网盘二开美化版惜染

购买套餐设置

彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染

订单记录

彩虹外链网盘二开美化版惜染

邮件发信设置

彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染

发信记录

彩虹外链网盘二开美化版惜染

用户 IP 地址获取设置

彩虹外链网盘二开美化版惜染

外观主题

后台「系统设置 – 外观设置」可切换 28 套 外观,前台页面、后台管理界面、顶部公告条、友链广告位、赞助页和各类弹窗会一起联动。

外观分成两类:布局型 改的是页面结构(导航位置、内容排版),配色型 只改颜色和质感、保持默认的顶部导航布局。

布局型外观(13 套)

外观 结构 后台
控制台侧栏风 顶部导航变为左侧固定侧栏,内容区为圆角卡片布局 同步改为侧栏
数据控制台风 更紧凑的侧栏,标题与搜索独立成顶栏,文件列表上方增加统计卡与类型筛选 同步改为侧栏
上传门户风 居中的门户式顶部导航,首页增加大号上传引导区,文件列表改为卡片网格 只换配色,保留顶栏
深色工作台风 深色底 + 72px 图标导航条(鼠标移上去展开文字),右侧常驻文件预览面板 同步改为侧栏
macOS 窗口风 整站套进一个 macOS 窗口:带红黄绿三颗灯的标题栏 + 底部状态栏,文件列表默认是访达式图标网格,可一键切回列表视图 同步套窗口,登录页也是
渐变仪表盘风 白色悬浮圆角侧栏(默认展开显示文字),列表页顶部是问候栏 + 紫色渐变额度卡与统计卡,右侧一列存储分布、最近上传、快捷入口面板 同步改为侧栏
蓝白工作台风 白色分组侧栏(工作空间 / 个人中心,底部升级卡)+ 顶部搜索条(Ctrl K 聚焦),列表页是蓝白横幅 + 四张统计卡 + 带类型筛选、排序、列表 / 网格切换的文件面板,右侧一列今日上传、我的权限、快捷操作、最近动态 同步改为侧栏
深空科技风 蓝白工作台的深色版:深蓝星空底 + 发光描边,横幅是大标题加三个卖点,权限卡多一行 同步改为侧栏
紫韵会员风 蓝紫渐变横幅、彩色统计卡,右侧首块是金色会员权限卡带升级入口,列表下方加一条卖点横幅 同步改为侧栏
清爽极简风 近乎纯白,横幅不做卡片直接铺在页面上,四条勾选卖点 + 两个大按钮,五张统计卡,最近动态是时间轴 同步改为侧栏
蓝天白云风 天蓝渐变横幅、右上角三枚浮标卖点,五张统计卡,列表下方是会员升级横幅 同步改为侧栏
潮酷涂鸦风 粗黑描边 + 硬投影 + 米色底的撞色风格:黑色侧栏配橙色选中项,超大标题横幅带手写标语和两个大按钮,五张统计卡各一个高饱和颜色 同步改为侧栏
云端门户风 家族里唯一的顶部横向导航:天空渐变大横幅带远山和居中大搜索框,浅色统计卡,右侧一列蓝色上传卡、存储空间、最近上传 保持顶栏

三套侧栏外观(控制台侧栏风 / 数据控制台风 / 深色工作台风)的侧栏底部会显示「今日上传」和「我的权限」两张卡片;渐变仪表盘风把同样的信息放进了顶部那张额度卡;其余外观则在文件列表页和上传页顶部显示一条权限条,内容一致。

工作台家族(7 套)

最后这七套共用同一套页面结构——分组侧栏 + 顶部搜索条 + 主视觉横幅 + 统计卡 + 文件面板 + 右侧数据列,区别在配色、横幅表现和几块可选内容(推广横幅、存储空间、会员卡等)。云端门户风是其中的例外,它把侧栏换成了顶部横向导航,搜索框搬进横幅里。

彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染 彩虹外链网盘二开美化版惜染

配色型外观(15 套)

深色系

主题 风格
黑夜风格 深色背景、蓝色高亮,适合夜间浏览
霓虹科技黑夜 蓝紫霓虹、科技感边框
暗黑科技后台风 深色点阵背景、半透明暗色面板,偏数据管理感

浅色系

主题 风格
蓝白清爽 默认主题,蓝白配色
青瓷微澜 青瓷色同心波纹,留白通透
淡紫点阵 薰衣草底色配细密点阵
米白纸张 极简纸张质感,横线纸纹配墨黑标题
淡粉暖调 浅粉底色配玫瑰色高亮
天蓝细纹 青蓝色调配斜向细纹
薄荷蜂巢 薄荷绿蜂巢暗纹

毛玻璃系

采用多层网格渐变背景叠磨砂玻璃面板,带内侧高光描边与彩色辉光。

主题 风格
蓝紫渐变玻璃 蓝紫渐变,半透明玻璃卡片
落日熔金 珊瑚橙到品红的落日渐变,浓烈张扬
深海玻璃 深海蓝绿渐变配青色辉光,通透安静
翡翠流光 翡翠绿到松石色,清透有质感
樱雾玻璃 粉紫到天青的浅色雾面渐变,轻盈明亮

外观配色(每套外观单独换色)

外观设置页顶部有一条吸顶的「外观配色」工具条(连同「保存外观」按钮),滚到最底下也一直停在上方。挑一个主色和副色,这套外观的 整套配色一起换掉,不是只换几个按钮。

项目 作用范围
主色 / 副色 该外观用到的全部有色部分:按钮、进度条、导航高亮、面板、卡片、边框、文字、图标、阴影、整页背景,前台和后台一起变
渐变角度 按钮、分页高亮等渐变元素的方向
中间色 渐变仪表盘风顶部那张额度卡的三段渐变
界面底色:页面底色 / 面板底色 / 正文色 / 边框色 灰白系不跟着主色的色相走,所以单独可调。改「面板底色」会把这套外观里所有白卡片、表格、下拉面板的底色一起换掉
整页背景渐变(起点 / 中间 / 终点 / 角度) 本来就铺渐变背景的外观:黑夜风格、霓虹科技黑夜、蓝紫渐变玻璃、落日熔金、深海玻璃、翡翠流光、樱雾玻璃

换色方式是 色相映射 而不是简单替换:拿该外观原本的主色、辅色当锚点,算出新旧颜色之间的色相 / 饱和度 / 明度差,再把同一份差值套到这套外观的每一个颜色上。所以:

  • 主色本身落在原来主色的位置,其余颜色按原有关系跟着走,深浅层次和对比度保持不变
  • 纯白、纯黑、灰色(阴影、分隔线)不动,近白的卡片底不会被压暗,深色外观的近黑底也不会糊成一片
  • 红色危险、绿色成功这类状态色跟主色系差得远,自动保持原样
  • 米白纸张、暗黑科技后台风这种本来就是单色系的外观,走「整套灰阶染上新色相」的路子
  • 因此白卡片、页面留白这类灰白底不会跟着主色变,要改它们用上面的「界面底色」四项;这四项按属性类别定点替换(背景类属性认面板底色、文字类属性认正文色、边框类属性认边框色),所以把白卡片换成米色时,按钮上的白字不会跟着变
  • 只有这四项本身的颜色会被替换,由它们派生出来的次级底色(如 --surface-soft--tint)仍按原值走,改动幅度太大时可能需要一起微调

其它细节:

  • 工具条里的外观下拉框和下面的外观卡片是 同一个选择,两边双向同步:在哪边选都会同时选中另一边,保存的外观和正在调的颜色永远是同一套
  • 每套外观各存各的,改哪套只影响哪套,换回去颜色还在;「恢复默认配色」把当前外观还原成内置配色
  • 工具条可以「收起 / 展开」,收起状态记在浏览器里
  • 只有改过的外观才会落库,没动过的外观一个字节都不多输出,页面和原来完全一样
  • 换色样式由 includes/theme_recolor.php 从 style.css / admin.css 里抽取该外观的规则重算后生成,缓存在 assets/css/custom/(按外观 + 颜色 + 源文件时间哈希命名,改了源样式会自动重算;目录不可写时退回页面内联输出)
  • 静态 404 页在保存外观时一并写入,错误页配色跟站点一致

用户登录与注册

后台「系统设置 – 用户登录设置」控制登录功能总开关,「邮件发信设置」里控制邮箱注册。

  • QQ / 微信快捷登录:配置快捷登录接口后可用,新用户登录后自动注册账号
  • 邮箱注册:填邮箱 → 收 6 位验证码 → 设置密码 → 注册完成并直接登录
  • 算术验证码:获取验证码前需要算一道简单算术题(如 5 + 3 = ?),可在后台关闭
  • 两种方式可以并存,登录页会自动显示可用的入口

后台可配置验证码有效期、同邮箱发送间隔、每日发送上限、全站发信上限,以及一次性邮箱域名黑名单。

个人中心

登录后从导航栏昵称下拉进入「个人中心」(/user.php),导航栏的「我的文件」也直接落到这里的文件页。游客没有账号,「我的文件」仍然是按浏览器缓存记录显示的首页列表。

页面分四个页签:

页签 内容
概览 文件数、占用空间、今日上传 / 上限、单文件上限四张数字卡,下面是当前套餐、每日上传(含加量包)、单文件大小、有效期,以及自己文件的类型分布条
我的文件 按文件名搜索、按类型筛选,可重命名、设置或取消访问密码、切换公开 / 私密、复制外链、单个与批量删除,每页 20 条
订单记录 自己的订单号、套餐、金额、支付方式、状态、下单与支付时间;打开页面时会顺手补查一次当面付的漏单
账号设置 账号资料(注册方式、注册时间、最后登录)、修改昵称、登录方式绑定、修改或设置密码

「私密」只是不在首页公共列表里出现,外链本身照样能打开,页面上也写着这句提示;真要限制访问得给文件设访问密码。

账号绑定

  • 邮箱注册的账号可以绑定 QQ / 微信,之后两种方式都能登录同一个账号
  • QQ / 微信登录的账号可以绑定邮箱并同时设置密码,绑定后就能用邮箱 + 密码登录
  • 注册时用的那种方式是主身份,不可解绑,所以「至少保留一种登录方式」天然成立
  • 同一个邮箱不会落到两个账号上:注册查重时会连绑定关系一起查
  • 站点没配发信通道时,绑定邮箱的入口会置灰并说明原因

邮件发信

后台「系统设置 – 邮件发信设置」,用于发送注册验证码。

通道 说明
SMTP 填自己的邮箱账号和授权码,QQ 邮箱、163、企业邮箱都可用
Resend / Brevo / SendGrid 走 HTTPS 接口发信,不受服务器封禁邮件端口的影响
  • 没有默认通道,勾选哪个用哪个,一个都不勾就是关闭发信
  • 勾选多个时按顺序依次尝试,前一个失败自动切到下一个
  • 页面底部可以 测试发信,填一个邮箱点一下就知道通不通,失败时显示具体原因

「发信记录」页记录每一次验证码发送:时间、邮箱、用途、状态(已发送 / 已验证 / 发送失败 / 已作废)、通道或失败原因、来源地址。顶部还有最近 1 小时、24 小时的发送量与上限对比,方便判断接口有没有被滥用。

购买权限

站点可以把上传额度做成套餐卖给用户,付款成功后权限立即生效,全程不需要人工介入。后台入口在「系统设置 – 购买套餐设置」和「订单记录」,前台入口是导航栏的「购买权限」。

支付方式

两种可以只开一个,也可以同时开着让用户在购买页自己选。

方式 流程 需要填写
支付宝当面付 页面内直接出二维码,扫码付款 应用 ID、支付宝公钥、商户应用私钥
易支付 点「立即购买」后弹窗选支付宝 / 微信 / QQ 钱包,跳转到收银台 接口地址、商户 ID(PID)、商户密钥(KEY)

彩虹外链网盘二开美化版惜染

还可以设置付款时显示的商品名称、易支付开放哪几个支付通道,以及购买页顶部的公告文字。

套餐

套餐在后台自由增删改,支持按分类分区展示。程序内置一套 24 个推荐套餐,点「一键导入推荐套餐」即可导入(同名自动跳过),导入后价格和额度随便改。

彩虹外链网盘二开美化版惜染

每个套餐可以单独设置每日上传数量、单文件大小和有效期,组合出四类套餐:

  • 时长套餐(周卡 / 月卡 / 季卡 / 半年卡 / 年卡):换成该套餐的额度,天数在剩余时间上叠加
  • 加量包:只增加每日数量,重复购买一直累加,不会被之后购买的时长套餐覆盖
  • 单文件加强包:只提升单文件上限,不动每日数量
  • 永久会员:一次买断,不再有到期时间

购买页会显示购买后的实际额度;买了不会带来任何提升的套餐会直接提示并拦下,不让用户白花钱。

订单记录

按状态筛选、查看累计金额,每笔订单都能查询支付状态、补发权限或关闭,另有「清理未支付订单」一键清理废单。

上传限制

后台「系统设置 – 文件上传设置」可以设置:

  • 全站每日上传数量、单文件大小上限
  • 每分钟上传次数
  • 允许 / 禁止的文件类型、文件名关键词过滤

登录用户按账号统计,游客按来源地址统计。用户的权限可以在「用户管理」里单独调整,也可以通过购买套餐获得。

站点如果套了 Cloudflare 或其它反向代理,需要在「系统设置 – 用户 IP 地址设置」里选对获取方式,页面上会直接显示每种方式当前取到的地址,对照着选即可。

内容检测

后台「系统设置 – 内容检测设置」可以对上传的 图片和视频 自动判定,三种引擎任选:阿里云内容安全、腾讯云内容安全,或 自建检测服务(在自己服务器上跑本地模型,文件不出服务器、没有调用费,部署见 tools/nsfw/README.md)。

判定结果分三档,不是简单的拦或不拦:

结果 文件状态 说明
放行 正常 低于转人工阈值
待人工 待审核 落在两个阈值之间,前台下载不了,等人工确认
已拦截 封禁 高于封禁阈值,同时记入违规公示(默认不公开,需人工确认后放出)

留中间这一档是因为本地模型的误判率比商用接口高得多,一刀切封掉会天天误伤。

图片和视频的差别

图片是上传请求里 同步 跑完的,几百毫秒无感。视频要抽帧,十几秒起步,所以是 异步 的:

  • 上传完先挂起(前台显示「需审核通过后才能在线播放和下载」),抽帧打分在后台跑
  • 跑完自动放行或封禁,不会卡住上传,也没有「先能下载、过一会儿突然被封」的窗口
  • 判定口径和图片不同:够 N 帧命中才封(默认 2 帧),只命中 1 帧转人工——转场、肤色、泳装剧照都可能让某一帧飙到 0.9,只看最高分会误判到没法用
  • 命中的那一帧会存成 证据帧,人工复核时直接看图,不用去播放器里找
  • 检测服务万一挂了,超时会自动放行(默认 30 分钟),不会让视频永远卡在待审

视频检测需要服务器上有 ffmpeg,一键安装脚本会自动处理;没有 ffmpeg 时后台设置页会 直接标红提示,图片检测不受影响。

检测记录

后台「内容检测记录」记录 每一个 检测过的文件,包括放行的——只看被拦下的,永远不知道 有多少该拦的漏了过去。页面上能看到评分、各模型明细、耗时、视频命中了哪几帧、最高分在第几秒,可以按结果和图片 / 视频分别筛选,也能就地把文件状态改成正常 / 封禁 / 待审。

违规文件公示

面向合规场景,把已封禁文件的处理情况对外公开。

  • 前台入口在导航栏「违规公示」,地址 /violation.php
  • 后台「文件管理」里封禁文件会自动生成公示记录,解封会自动撤下,批量操作同样生效
  • 后台「系统设置 – 违规公示管理」可查看全部记录、修改文件名与备注、单条开关是否公示、手动补录或删除记录
  • 支持一键导入历史已封禁文件
  • 可在「网站信息设置」里关闭整个公示功能,并自定义公示页顶部的说明文字

公示页只输出脱敏信息:文件名打码、IP 只显示前两段,不输出文件哈希、下载链接或任何可访问地址。开启内容检测时,机器自动命中封禁的文件会留档但默认不公示,需人工确认后手动放出。

覆盖记录审计

用户的覆盖上传和在线编辑都会改变已有链接背后的内容,后台「覆盖记录」用于复查这类改动。

  • 记录覆盖前后的文件名、大小、格式,图片可直接预览新内容
  • 记录操作者 UID / IP、时间和方式(覆盖上传 / 在线编辑)
  • 显示该文件当前状态(正常 / 待审 / 已封禁 / 已删除)
  • 每条记录可直接查看、封禁、删除文件、标记已复查或删除记录
  • 默认只显示未复查的条目,页面顶部提示积压数量,支持一键全部标记已复查

赞助页

  • 可在「网站信息设置」里整个关闭:关闭后前台导航不显示入口、直接访问地址也会跳回首页,后台的「赞助名单管理」菜单同时隐藏,名单数据保留
  • 赞助名单在后台「系统设置 – 赞助名单管理」维护
  • 同一页面可配置微信、QQ 钱包、支付宝三张收款码,支持完整网址或相对 includes/sponsor/ 的路径;某一项留空则赞助页上不显示该收款方式
  • 赞助页配色跟随站点当前外观主题

访问链接

文件的对外链接使用独立的随机 token:

  • 同一份内容被多人上传时,每个人都会得到独立的记录和独立的链接,各自的文件名、密码、隐藏设置互不影响,物理文件仍然只存一份
  • 覆盖上传和在线编辑只会改变当前这一条记录指向的内容,不会连带修改其他人的文件
  • 删除文件时,只有当没有任何记录再引用这份内容时,才会真正清理物理文件

支持的云存储

存储类型 浏览器直传 直链下载 断点续传
本地存储 支持
阿里云 OSS 支持 支持 支持
腾讯云 COS 支持 支持 支持
华为云 OBS 支持 支持 支持
又拍云 支持 支持
七牛云 支持 支持 支持
通用 S3 兼容存储 支持 支持 支持
WebDAV 支持
OneDrive 支持 支持
OpenList / AList 支持 支持

「浏览器直传」指文件由浏览器直接传给存储、不经过本站服务器;「直链下载」指下载时由本站 302 跳到存储自己的地址,不消耗本站流量。WebDAV、OneDrive 和 OpenList 的直传需要 PUT 或上传会话,和前端这套 POST 表单直传对不上,所以固定走网站中转。

后台「存储类型设置」页上,每种存储都有「连接测试」按钮:它用已保存的参数往存储里写一个几十字节的小文件,读回来核对后再删掉,一次跑通写、读、删三项权限。

有文件之后也能换存储

文件表的每条记录都记着自己当初存到哪个存储(pre_file.storage),下载、预览、在线编辑、删除都按这个字段回到原存储去取,所以换存储只影响之后的新上传,已经上传的文件照常能下,外链也不会失效。存储卡片上会标出「N 个文件在此」,一眼能看出哪几份参数还在被老文件依赖。

换存储时要注意:

  • 旧存储的参数原样留着别删。删了或者改错了,压在那儿的老文件就真的取不回来了——卡片上的数字就是提醒。
  • 旧存储的服务不能停。老文件的流量仍然走旧存储,欠费、停机、删桶都会让它们下不下来。
  • 秒传(同内容重复上传)会跟着已有记录指向同一个存储,不会把老内容再复制一份到新存储。
  • 覆盖上传和在线编辑写的是 新内容,一律落到当前存储,该记录的 storage 也会一并更新。
  • 如果后台填了「文件下载域名」,而旧文件在阿里云 OSS / 腾讯云 COS / 华为云 OBS / 又拍云 / 七牛云这几家里,那个域名是给新存储绑的,拼出来的直链对不上;这种情况下旧文件会自动改走网站中转,内容一定对,只是多耗一点本站带宽。域名留空则不受影响。

程序目前不会把老文件搬到新存储,也就是说旧存储要一直留着。需要「搬完就退掉旧存储」的话得另做一个迁移工具。

同时开放多个存储

后台「存储类型设置 → 多存储上传」可以一次开放几个存储,让用户在上传页自己挑存储位置,并且给每个存储限定谁能用。

配置项 说明
同时开放多个存储 总开关。关着的时候整套不生效,所有新文件都写到卡片里选中的那个存储
开放哪些、给谁用 每个存储可单独勾选开放,并选择门槛:所有人(含未登录访客)/ 仅登录用户 / 仅高级用户

「仅高级用户」指 level > 0 且权限还在有效期内的账号,判断规则和上传额度用的是同一套(is_user_permission_active())。

当前存储必开、且对所有人开放,这一行在后台是锁死的。它是兜底:用户没选、选了个不该他用的、或者池子配空了,都会落到它上面。它在上传页的下拉里也永远排第一、默认选中,这样「下拉的默认项」和「漏传参数时的兜底」是同一个,不会错位。

上传页只有在总开关打开、且当前访客够格用的存储不止一个时才显示「存储位置」下拉;只有一个时连框都不出,和单存储时的页面完全一样。

实现上有一处必须注意:目标存储在 pre_upload 那一刻就定死,并写进会话里的 upload_state 带到后续请求。因为浏览器直传是拿某个存储的密钥签好参数、由浏览器直接 POST 进那个桶的,一次上传又横跨 pre_upload / upload_part / complete_upload 好几个请求,中途重新计算目标就会出现「签的是 A、记录写的是 B」,或者分块被写进两个不同的存储。用户提交的存储名一律用 storage_pick() 拿允许列表校验,改请求参数指定不到没开放给自己的存储。

开了多存储之后,有几件事和单存储时不一样:

  • 直传要给每个开放的存储都配好跨域(CORS),只配了一个的话,用户选到另一个会传不上去。选中的存储本身不支持直传(WebDAV / OneDrive / OpenList)时会自动改走网站中转。
  • 秒传优先:站内已经有同样内容的文件时直接复用那一份,不会按用户选的存储再存一遍,这时用户选了什么就不作数了。
  • 在线编辑保存 的新内容一律写到当前存储,不跟着原文件回原存储,记录的 storage 会同步更新。
  • API 上传接口api.php)没有存储参数,固定写当前存储。
  • 「文件下载域名」全站只有一个值,只对当前存储生效;存在别的对象存储里的文件会自动改走网站中转。想让每个存储都走直链,把这个域名留空,各家用自己的默认域名。

通用 S3 使用 AWS Signature Version 4 签名协议,可用于 AWS S3、MinIO、Cloudflare R2、Backblaze B2,以及其他兼容 S3 API 的对象存储服务。

通用 S3 配置

进入后台的「存储类型设置」,展开「通用 S3 兼容存储」,填写以下参数:

配置项 说明
Access Key 对象存储平台提供的访问密钥 ID
Secret Key 对象存储平台提供的访问密钥密码
Endpoint S3 API 地址,需填写完整的 http:// 或 https:// 地址
Region Bucket 所在区域,例如 us-east-1;Cloudflare R2 通常填写 auto
Bucket 存储桶名称
对象前缀 文件在 Bucket 内的目录前缀,默认是 file/;留空则使用根目录
地址风格 可选择虚拟主机风格 bucket.endpoint 或路径风格 endpoint/bucket

常见配置提示:

  • AWS S3:Endpoint 可填写对应区域的 S3 地址,Region 必须与 Bucket 实际区域一致
  • MinIO:填写 MinIO API 地址和端口,通常选择「路径风格」
  • Cloudflare R2:Endpoint 通常为 https://< 账户 ID>.r2.cloudflarestorage.com,Region 填写 auto
  • Backblaze B2:填写平台提供的 S3 Endpoint,并使用该 Endpoint 对应的 Region
  • 如果平台报 Bucket、域名或签名不匹配,可切换「地址风格」后重试

通用 S3 支持网站中转上传、POST Policy 浏览器直传、签名下载、断点下载、文件删除和文件信息读取。使用浏览器直传前,需要确认存储平台支持 S3 POST Policy,并为 Bucket 配置允许本站域名发起 POST 请求的 CORS 规则;部分平台不支持这种直传方式,此时请在后台选择「网站中转」。

WebDAV 配置

适配坚果云、Nextcloud / ownCloud、Alist、群晖 WebDAV、Apache mod_dav 等标准 WebDAV 服务。

配置项 说明
WebDAV 地址 服务商给的 WebDAV 根地址,例如坚果云 https://dav.jianguoyun.com/dav/、Nextcloud https:// 域名 /remote.php/dav/files/ 用户名 /
账号 WebDAV 账号
密码 WebDAV 密码;坚果云要用「安全选项」里生成的 应用密码,不是登录密码
存储目录 相对根地址的子目录,留空默认为 file,目录不存在会自动创建

WebDAV 上传下载都经过本站服务器中转,因此本站的带宽就是网盘的实际速度上限。认证固定使用 Basic:CURLAUTH_ANY 会先发一次不带凭据的请求探路,服务端回 401 后 curl 需要把已经发出去的文件流倒回去重发,PUT 大文件时会直接失败。

OneDrive 配置

支持个人版、商业版和世纪互联版(中国区)。

  1. 到 Azure 应用注册 新建一个应用
  2. 把后台「存储类型设置 → OneDrive」里显示的 回调地址 原样填进应用的「重定向 URI(Web)」,通常是 https:// 你的域名 /admin/set_stor.php
  3. 在「API 权限」里加上 Files.ReadWrite.All 和 offline_access
  4. 在「证书和密码」里生成客户端密码,复制 ** 值(Value)** 而不是密码 ID
  5. 回到后台填好账号类型、应用 ID、应用机密并保存,再点「获取授权」,跳转到微软登录页完成授权

授权拿到的 refresh_token 保存在配置表里,access_token 过期会自动续期,微软轮换的新 refresh_token 也会一并存下。上传走本站中转,超过 4MB 的文件自动改用上传会话分片上传(每片 10MB,失败的分片会重试两次,整个文件不用从头再来)。

下载可以选「直接链接」,本站会 302 到微软给的一小时临时地址,不消耗本站流量;代价是下载下来的文件名会变成站内的存储名(没有扩展名),在意文件名就选「网站中转」。

OpenList 配置

对接自建的 OpenList,同时兼容 AList v3 的接口。OpenList 后面挂什么盘(阿里云盘、百度网盘、OneDrive、本地磁盘、对象存储……)由它自己管,本站只跟它的 HTTP 接口打交道。

配置项 说明
OpenList 地址 站点根地址,不要带 /api;自建没上 HTTPS 的要把 http:// 一起写上,例如 http://192.168.1.5:5244
账号 / 密码 登录用的账号密码,建议单独建一个只对存储目录有读写权限的用户,不要用 admin
固定令牌 可不填。填了就直接拿它调接口,不再用账号密码登录;对应 OpenList 后台「其他设置」里的令牌
存储目录 OpenList 里的完整路径,第一段必须是已经挂载好的存储名,例如挂载路径是 /aliyun 就填 /aliyun/pan/file;留空默认为 /pan/file,目录不存在会自动创建

用账号密码登录拿到的令牌缓存在配置表里,按 24 小时轮换(服务端默认签发 48 小时);令牌被服务端提前作废时(改过密码、重启清了会话)会自动重新登录一次再重发请求。

上传走本站中转(PUT /api/fs/put),因此本站带宽就是实际速度上限。下载可以选「直接链接」,本站先问 POST /api/fs/get 要到 raw_url 再 302 过去:底层是对象存储或网盘时会直接跳到上游地址,底层开了代理时跳的是 OpenList 自己的带签名地址。和 OneDrive 一样,直链下载拿到的文件名会变成站内的存储名(没有扩展名),在意文件名就选「网站中转」。

需要注意 OpenList 的接口不管成功失败 HTTP 状态码基本都是 200,真正的结果在响应体的 code 字段里,所以驱动一律解完 JSON 再判断成败。

环境要求

  • PHP >= 7.1,需启用 cURL 扩展
  • MySQL / MariaDB
  • 当前程序版本 VERSION 为 1628,数据库版本 DB_VERSION 为 1022
  • 视频检测还需要服务器上有 ffmpeg(自建检测服务的一键脚本会自动安装)

安装与升级

全新安装访问 install/ 目录按提示完成即可。

从旧版本升级时,覆盖程序文件后 必须 访问一次:

http(s):// 你的域名 /install/update.php

看到「网站数据库升级完成」即可。升级脚本会建表、补齐配置项,并把历史数据迁移到新结构。若跳过这一步,程序会因为数据库版本落后而提示「请先完成网站升级」。

静态资源的缓存串分两种,改代码时要注意区别:

  • assets/css/style.cssassets/css/admin.cssassets/js/buy.js 用 asset_ver(),取的是 文件修改时间style.css?v=1756...)。改完传上去地址自动就变了,不用管。
  • 其余 JS(layout-studio.jslayout-mac.jslayout-workspace.jsuploadnew.jsusercenter.js)和 includes/ads.php 用的是 includes/common.php 里的 VERSION 常量。改过这些文件就要把 VERSION 加一,否则浏览器和 CDN 会继续用旧文件。

服务器开着 OPcache 的话(宝塔默认开),覆盖 PHP 文件后 要重启一次 PHP-FPM,否则会继续执行缓存里的旧代码。

相较原版新增的内容

  • 外观扩展至 28 套(15 套配色型 + 13 套布局型,含 macOS 窗口风、渐变仪表盘风,以及蓝白工作台风一家七套),前后台、公告条、赞助页及弹窗联动
  • 新增个人中心:额度与用量概览、我的文件管理(重命名 / 密码 / 公开私密 / 批量删除 / 复制外链)、订单记录、账号设置
  • 新增账号绑定:一个账号可同时用邮箱和 QQ / 微信登录,注册时用的那种方式不可解绑
  • 新增邮箱注册与登录,含算术验证码与发信记录
  • 新增购买权限模块:套餐管理、支付宝当面付与易支付、订单记录与对账
  • 新增邮件发信设置,支持 SMTP 与三种 HTTP API 通道,可测试发信
  • 新增用户管理与权限设置,可单独设置每位用户的额度与有效期
  • 新增覆盖上传功能及配套的后台审计界面
  • 新增内容检测:图片同步检测、视频抽帧异步检测,支持阿里云 / 腾讯云 / 自建本地模型三种引擎,带独立的检测记录页和证据帧
  • 新增违规文件公示功能
  • 文件状态改为三态可切换(正常 / 封禁 / 待审核),文件管理和内容检测记录都能就地改
  • 赞助名单可整体开关,关闭后前后台入口一并隐藏
  • 新增广告公告位设置
  • 新增在线查看文本内容与在线编辑功能
  • 新增通用 S3 兼容存储,可对接 AWS S3、MinIO、Cloudflare R2、Backblaze B2 等平台
  • 新增 WebDAV 存储,可对接坚果云、Nextcloud、Alist、群晖等
  • 新增 OneDrive 存储,后台一键授权,支持个人版 / 商业版 / 世纪互联版
  • 新增 OpenList 存储,可对接自建的 OpenList / AList 聚合网盘,兼容 AList v3 接口
  • 存储不再是全站唯一:文件表记下每条记录存在哪个存储,换存储后旧文件仍从原存储读取,外链不失效
  • 新增多存储上传:可同时开放多个存储供用户在上传页自选,并按所有人 / 仅登录用户 / 仅高级用户分级授权
  • 存储类型设置页重做:卡片式选择、按能力显示传输方式、密钥默认打码、每种存储都能做连接测试
  • 文件访问链接改为独立 token,同内容多次上传互不干扰
  • 上传限制新增每分钟次数,并可配置反向代理下的真实 IP 获取方式
  • 前后台界面整体美化与手机端适配

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容