imgtoc 图片图床(Discuz! 插件)功能与特点说明
面向站长、技术人员:实现原理、后台能力、配置与依赖。
插件路径:dz3.5/source/plugin/imgtoc/
版本以discuz_plugin_imgtoc.xml中version为准(当前 2.0)。
一、产品定位
imgtoc 图片图床用于 Discuz! X 系列论坛,在发帖/回复时将图片上传到独立的 ImgToC 图床,获得可外链的直链地址。适合需要 CDN 加速、图片直链 的场景(如外贸站、独立站、店铺描述图等)。
- 插件标识:
imgtoc - 兼容版本:XML 标注 X2~X3.5,包内以 X3.5 为主
- 版权:imgtoc.com
二、核心功能
1. 发帖编辑器集成
- 钩子
post_editorctrl_left:在编辑器左侧增加图床上传按钮(图标、鼠标提示可在后台配置)。 - 用户组权限:仅被选中的用户组可使用图床。
- 可选:隐藏系统自带「附件」上传、隐藏系统自带「图片」上传。
2. 弹窗上传与「我的图片」
file_box+upload:弹窗内选择/拖拽图片上传;分片参数与远端/api/upload/config等对接。- 上传流程经
plugin.php?id=imgtoc:upload_api代理:config/init/chunk/merge。 - 用户可查看与当前论坛 UID 关联的远端图片列表(
itc_act=my_images,对接api-discuz-list)。
3. 服务端代理与安全
- X-API-Key 不输出到浏览器,由 PHP cURL 转发;校验
formhash。 - 对 JSON 体大小、
task_id、chunk_index、远程file_id等做校验与消毒。 - HTTPS 可选 是否校验 SSL 证书(
imgtoc_ssl_verify),便于调试;生产建议开启。 merge成功后写入imgtoc_upload_log,供后台报表使用。
4. 管理后台:文件管理(adm_files)
代理调用 ImgToC 的 Discuz 专用接口(均需有效 API 密钥):
| 能力 | 说明 |
|---|---|
| 列表 | api-discuz-list:分页、关键词、排序、文件夹、文件类型等 |
| 文件夹 | api-discuz-folders |
| 删除 | api-discuz-delete、api-discuz-batch-delete |
列表数据会补充 Discuz 附件类型图标等展示字段。若远端未部署对应 act,可能返回「未知的 API 操作」;插件内对错误文案有引导(需指向已升级的本站 ImgToC)。
5. 管理后台:报表统计(adm_stat)
- 数据源:本地表
imgtoc_upload_log,仅统计经本插件代理且 合并成功 的上传。 - 近 7 天 / 30 天维度,Chart.js 图表(次数、占用空间等,以模板为准)。
- 支持按用户筛选(若界面提供)。
6. 管理后台:公告与版本
imgtoc_admin_notice_feed:服务端请求 phpdisk.com 公告/版本接口,避免浏览器跨域;与业务图床 API 基址无关。
三、主要配置项
| 变量 | 说明 |
|---|---|
imgtoc_api_base |
ImgToC 站点根地址(无末尾斜杠),须含 api-discuz-list 等接口的版本 |
imgtoc_key |
X-API-Key,在图床用户中心生成 |
imgtoc_ssl_verify |
cURL 是否校验 SSL 证书 |
imgtoc_title |
发帖页图床按钮提示文字 |
hide_attach / hide_image |
是否隐藏系统附件/图片上传 |
use_disk_gid |
可使用图床的用户组 |
四、技术特点摘要
- 密钥仅服务端使用,降低泄露与浏览器跨域白名单负担。
- 分片上传 + 可配置超时,适配较大文件与弱网。
formhash、HTTP 401/403 等有明确错误提示。- PHP ≥ 5.6(
commons.inc.php),需 cURL 访问远端。
五、数据库
imgtoc_upload_log:log_id、uid、username、file_size、dateline、remote_file_id、file_name等;安装/升级脚本创建或维护。升级脚本可能删除历史itc_*表并重建本表(以upgrade.php为准)。
六、配套依赖
必须部署 实现上述 API 的 ImgToC 图床程序;站点地址与密钥需与图床后台「API 接入」一致。若仅指向未含 Discuz 列表接口的演示站,后台文件管理将不可用。
文档随仓库代码更新,如有出入以源码为准。
评论 0