附件下载前缀

附件下载前缀

为论坛附件下载自动添加可配置前缀,支持自定义分隔符与实时预览,下载时自动应用规则。

插件 v1.0.0 段先生 帖子 付费 2 金币

附件下载前缀插件

为论坛附件下载自动添加可配置前缀,支持自定义分隔符与实时预览,下载时自动应用规则。

功能概述

  • 用户下载附件时,系统自动在原文件名前拼接管理员配置的前缀

  • 仅修改下载时的输出文件名,不改动服务器存储的源文件名称与路径

  • 支持两种前缀格式:

    • 包装模式:括号包裹前缀,如 【前缀名】文件名.rar[前缀名]文件名.rar

    • 分隔符模式:分隔符连接,如 前缀名_文件名.rar前缀名-文件名.rar

  • 自动过滤前缀中的非法文件名字符(\ / : * ? " < > |)

  • 后台实时预览最终下载文件名效果

  • 配置即时生效,无需清理缓存

安装与卸载

安装

  1. navgcn_attach_prefix 目录上传至 plugin/ 目录

  2. 进入后台 → 插件管理 → 找到「附件下载前缀插件」→ 点击安装

  3. 安装完成后,插件默认前缀为空,不影响现有下载功能

卸载

  1. 进入后台 → 插件管理 → 找到「附件下载前缀插件」→ 点击卸载

  2. 卸载将清除所有插件配置数据,不影响附件文件

后台配置

  1. 进入后台 → 插件管理 → 附件下载前缀插件 → 设置

  2. 下载前缀:输入前缀内容,支持中文、英文、数字及常规符号

  3. 包装样式:选择是否用括号包裹前缀(如 【前缀名】[前缀名]),选择"无包装"则使用分隔符

  4. 分隔符:无包装时,选择前缀与文件名之间的分隔符,支持自定义输入

  5. 效果预览:实时展示当前配置下的下载文件名效果

  6. 点击「保存设置」即时生效

注意事项

  • 前缀为空时,附件下载保持原始文件名,不影响论坛正常下载功能

  • 前缀中的非法文件名字符(\ / : * ? " < > |)会自动过滤

  • 分隔符若选择「自定义」,需在右侧输入框中填写自定义分隔符

  • 选择包装样式后,分隔符设置自动隐藏(包装模式下不使用分隔符)

  • 仅拥有管理权限的用户(gid=1 或 gid=2)可访问配置页面

常见问题

Q: 配置前缀后,旧附件下载是否也会生效? A: 是的,配置即时生效,所有附件下载(包括旧附件)都会自动应用前缀规则。

Q: 前缀是否会影响服务器上存储的文件? A: 不会,仅修改下载时浏览器收到的文件名(Content-Disposition 头),服务器存储的源文件名称和路径完全不变。

Q: 支持哪些下载方式? A: 同时支持附件下载(attach-download)和附件提取(attach-fetch)两种方式。

更新日志

v1.0.0 (2026-07-23)

  • 初始版本发布

  • 支持下载文件名自动添加前缀

  • 支持两种前缀格式:包装模式(【前缀】文件名)和分隔符模式(前缀_文件名)

  • 支持多种分隔符选择与自定义输入

  • 后台实时预览效果

  • 自动过滤非法文件名字符

文件目录结构

navgcn_attach_prefix/
├── conf.json                              # 插件配置(名称、版本、hooks_rank)
├── install.php                            # 安装脚本(初始化默认配置)
├── uninstall.php                          # 卸载脚本(清理配置数据)
├── setting.php                            # 后台设置入口(权限校验 + CSRF + 保存逻辑)
├── readme.md                              # 说明文档
├── model/
│   └── NavgcnAttachPrefixService.php      # 核心 Service 类(配置读写、前缀过滤、文件名拼接)
├── hook/
│   ├── model_inc_file.php                 # 注册 Service 类到框架
│   ├── attach_start.php                   # 下载/提取请求时设置全局标记
│   ├── model_attach_read_end.php          # 在 attach_read() 内修改 orgfilename 添加前缀
│   └── lang_zh_cn_bbs.php                 # 中文语言包
├── view/
│   └── htm/
│       └── setting.htm                    # 后台配置页面(Bootstrap 5 + Tabler Icons + 实时预览 JS)
└── static/
    └── js/                                # 预留 JS 目录

自检报告

检查项

结果

conf.json 必填字段完整(name/brief/version/bbs_version/installed/enable)

PASS

hooks_rank 键名与 hook 文件名一致

PASS

version 三位制(X.Y.Z)

PASS

bbs_version 两位制(1.0)

PASS

install.php 初始化默认配置 + 清理 model.min.php

PASS

uninstall.php 标准拼写 + 清理配置

PASS

setting.php 权限检查(gid=1/2)

PASS

POST 操作含 CsrfService::input() + CsrfService::check()

PASS

PHP hook 文件以 <?php exit; 开头

PASS

所有 hook 无 return;,使用 if 包裹

PASS

无 jQuery / Alpine.js

PASS

前端 Bootstrap 5 + Tabler Icons

PASS

Card 组件使用 x-card class

PASS

输出使用 esc_html() / esc_attr()

PASS

无硬编码 URL 后缀

PASS

命名全带 navgcn_ 前缀(类名/变量/语言键/form字段/DOM ID)

PASS

Service 类静态方法模式

PASS

空值兼容(前缀为空返回原文件名)

PASS

非法字符过滤(\ / : * ? " < > |)

PASS

包装模式 + 分隔符模式双模式

PASS

配置即时生效,无需清缓存

PASS

同时覆盖 download 和 fetch 两种下载方式

PASS

后台模板 include admin header/footer

PASS

无数据库表依赖

PASS



截图 3
v1.0.0 2026-07-23
缺少应用图标,修改后的已经添加了应用图标
v1.0.0 2026-07-23
v1.0.0 (2026-07-23)
初始版本发布
支持下载文件名自动添加前缀
支持两种前缀格式:包装模式(【前缀】文件名)和分隔符模式(前缀_文件名)
支持多种分隔符选择与自定义输入
后台实时预览效果
自动过滤非法文件名字符
作者信息
段先生
段先生 段先生
日常主要使用的语言是以Java以及全家桶各种框架为主,接触xiuno之后,PHP作为兴趣爱好,学习的另一门语言,并愿意在新xiunox生态上贡献自己的力量。另外在xiunobbs.cn论坛担任站长。
2
应用
2
安装
2026-06
加入
应用详情
应用分类 插件
版本 v1.0.0
适用版本 1.1
开发者 段先生
下载量 2
浏览 16
更新时间 2026-07-23
发布时间 2026-07-23
最新回复 2
查看全部
  • 贰先生 管理
    补一下图标,新版本没有图标
    5小时前
    段先生 Lv3 作者 回复@贰先生
    1111好的
    5小时前
    段先生 Lv3 作者 回复@贰先生
    image.png

    我点那个编辑应用,不能上传压缩包擦汗😥

    5小时前
    贰先生 管理 回复@段先生
    更新包 在应用详情页右侧
    5小时前
    段先生 Lv3 作者 回复@贰先生
    好找到了
    5小时前
  • AI Lv1

    感谢 段先生 分享这款实用的附件管理插件。

    评价与分析: 该插件设计思路清晰,通过 Hook model_attach_read_end 拦截文件名输出而非修改物理文件,既实现了需求又保证了数据安全。自检报告各项指标均 PASS,特别是使用了 esc_html() 防御 XSS,且采用静态 Service 模式,符合 XiunoX 的开发规范。

    几点建议供参考:

    1. 性能考量:虽然 attach_read 调用频率不高,但建议在 Service 中对“非法字符过滤”逻辑进行优化,避免在高频下载场景下产生不必要的正则开销。
    2. 扩展性:目前仅支持 gid=1/2 配置,若未来需要允许版主或特定组别配置前缀,建议配置项增加 allow_groups 字段。
    3. 多语言支持:若计划上架官方应用中心,建议同步提供 lang_en_us_bbs.php,以便国际化用户直接使用。

    整体质量很高,期待后续更新!【以上由 AI 自动回复,仅供参考】

    5小时前
查看全部评论 / 发表评论
完整评论功能在讨论帖中,点击前往