FILE PLATFORM · 安全可控

拇指云文件

受控上传 · 加密预览 · 全链路审计的文件中枢

为业务系统提供统一文件接入能力:内容级去重避免重复占盘、PostgreSQL 落库可追溯、加密长串预览兼容历史链接,每一次访问均留痕可查。

查看接入指引 → 完整对接文档
双域名架构平台 / 预览分离
去重存储内容 md5 唯一
PostgreSQL 落库全字段追溯
访问日志审计预览 / 下载留痕
Architecture

双域名,一套文件系统

两个域名绑定同一物理目录,由 URL 路径与扩展名区分平台逻辑与预览逻辑,无需额外网关。

平台主站

file.muzhiyun.com

承载对接指引、三个上传接口与完整的对接文档。

  • 打开根路径即返回本页
  • 上传与文档均在 file.muzhiyun.com 完成

预览分发站

f.muzhiyun.com

专门提供"加密长串"预览 / 下载,兼容历史分享链接。

  • 访问形态:f.muzhiyun.com/{长串}
  • 支持缩图 ?s= 与下载 ?act=download
Capabilities

平台核心能力

从上传、存储到分发、审计,关键能力开箱即用。

内容级去重

物理文件名即内容 md5,相同内容天然同路径,同一 sid 下只存一份,杜绝重复占盘。

PostgreSQL 落库

上传者、上传 / 更新时间、文件名、类型、大小、内容哈希全记录,可追溯。

加密长串预览

预览地址带签名校验,路径无法被篡改伪造;历史链接形态保持一致。

访问日志审计

每次预览 / 下载写一行日志(动作、时间、IP、UA、来源),供统计与合规查证。

智能缩图

预览 URL 加 ?s=宽度 即返回对应宽度的缩略图,仅图片生效。

降级容错

即便 PostgreSQL 暂不可用,已存在的文件仍可正常预览,仅丢失本次访问日志,绝不 500。

Integration

三步完成文件接入

统一的伪 JWT 鉴权 + 三个上传接口,几分钟即可打通。

所有上传接口须携带业务端签发的伪 JWT:请求头 X-XSRF-TOKEN: Bearer <token>。
令牌为三段式 header.payload.signature:签名 = md5(header + <签名盐> + payload), 业务校验 = md5(sid + uid + exp + <业务盐>),exp 为过期时间戳,过期即失效。
※ 签名盐与业务盐为服务端私密配置(见服务端 config 文件),由平台与业务系统线下约定,不在公开指引中披露。

三个上传接口

接口用途入参编码
Up.do图片上传img(base64) + nameapplication/x-www-form-urlencoded
Up_mp.do移动端图片(多格式)img(base64) + nameapplication/x-www-form-urlencoded
Up_PDF.do文档 / 通用文件file(二进制) + namemultipart/form-data

支持类型见服务端 config 的 ALLOWED_TYPES(图片 / PDF / Office / 压缩包 / 音视频等);图片限 10MB,文档限 100MB。

返回示例

# 成功返回 JSON { "ok": 1, "msg": "d1{sid}d{uid}{md5}.{ext}", // 短串(建议存储) "key": "d1{sid}d{uid}{md5}.{ext}", // 同 msg "file": "{md5}.{ext}", // 纯物理文件名 "file_key": "<完整加密长串>", // = url 去掉域名 "url": "https://f.muzhiyun.com/<完整加密长串>", "dup": 0 }
dup=1 表示同 sid 下内容已存在,本次直接复用、不再占用空间,请据此判断是否跳过重复上传。
该存哪一个(重要):上传返回的是短串(msg/key,形如 d1{sid}d{uid}{md5}.{ext}),它本身不是可访问地址;url 才是带签名的完整可用地址。
建议业务库持久存储短串,分发时再按需要签出 URL——完整长串第 11~20 位是过期时间戳,业务方可自签「限时 / 限次」链接,到期即回退过期占位图;平台默认签发的链接为长期有效。
※ 自签需用到线下约定的签名盐(不公开);磁盘上的纯物理文件名见 file 字段。
⚠ 切勿用「域名 + 短串」直接拼 URL——短串缺少签名段,会被判为无效 key 而回退默认占位图。必须由业务端自签成完整长串,或直接使用返回的 url / file_key。

调用示例

图片(base64)
文档(multipart)
# 图片上传 curl -X POST https://file.muzhiyun.com/Up.do \ -H "X-XSRF-TOKEN: Bearer <token>" \ -d "img=data:image/jpeg;base64,....&name=demo.jpg"
Preview & Download

预览与下载

上传成功返回的 url 即完整预览地址,可直接 <img src> 或浏览器打开。

https://f.muzhiyun.com/{长串}

浏览器内预览(图片直接显示,文档返回封面占位)。

...?s=300

返回宽 300px 的缩略图(仅图片生效)。

...?act=download

触发下载(Content-Disposition: attachment)。

旧链接(历史加密长串)形态完全一致,迁移到 f.muzhiyun.com 后依旧可访问;旧文件在 E:\up、新文件在 D:\up,show.do 自动回退查找。
Operations

系统注意事项(部署 / 运维必读)

存储与去重 +
  • 落盘路径:D:\up\{sid}\{h0}\{h1}\{md5内容}.{ext},物理文件名即内容 md5,相同内容天生同路径。
  • 同 sid 去重:数据库唯一索引 (sid, file_hash) 双保险,重复内容只存一份,dup=1 复用。
  • 旧文件兼容:历史文件在 E:\up,预览时自动回退查找,迁移平滑。
数据库(PostgreSQL) +
  • 表 mzy_files:sid、上传者(uid/created_by)、上传与更新时间、文件名、类型(MIME)、大小、内容哈希、磁盘路径、访问数、状态。
  • 表 mzy_files_log:每次预览 / 下载写一行(动作、时间、IP、UA、来源、结果)。
  • 数据表已随平台初始化创建于 muzhiyun 库;完整字段结构见对接文档第七章。
  • PHP 需启用 pdo_pgsql 与 gd(缩图)扩展。
权限与占位图 +
  • D:\up 写权限:IIS 进程(IUSR 或应用池标识)需"修改"权限,否则上传 mkdir 失败。
  • 占位图:D:\up 根目录需放置 nopic01~04.jpg / pdf.jpg / mp34.jpg / doc.jpg,文件缺失或解析失败时回退显示。
令牌与安全 +
  • 上传 token 盐值:签名盐与业务盐属服务端私密配置,由平台与业务系统线下约定,切勿写入前端或公开页面。
  • 预览长串带签名校验,路径无法被篡改伪造。
  • 库文件(config/keys/db/auth/files/util)已禁止通过 Web 直接访问,仅作内部引用。

准备好接入了吗?

拿上业务端签发的上传令牌,对照文档三步即可打通文件上传与预览。

完整对接文档 上传接入指引