📦🔐 分片上传 + 断点续传 + 登录防爆破
-
分片上传 + 断点续传
- 新增
t_upload_session表记录每个会话的已上传分片 bitmap - 支持浏览器/脚本将大文件切片并行上传,中途断网可恢复
- 默认分片 5MB,并发 3,单文件上限 100GB
- 整体 MD5 校验 + 单片 MD5 校验(可选)
- 秒传:同 MD5 文件已存在时通过硬链接直接返回成功
- 过期会话(24 小时)自动清理分片临时目录
- 新增
-
登录限流防爆破
- 同一 IP 5 分钟内登录失败 ≥ 5 次,自动锁定 15 分钟
- 登录成功立即清空失败计数
- 纯内存实现,零外部依赖(无 Redis)
- 锁定期间所有尝试直接返回 429,保护后端资源
-
下载支持 HTTP Range
DownloadFile切换到http.ServeContent,支持断点续传、拖动进度条- 大文件下载可用 wget/curl
-c续传
| 接口 | 方法 | 说明 |
|---|---|---|
/api/v1/file/upload/init |
POST | 初始化分片上传会话,返回 uploadId |
/api/v1/file/upload/status |
GET | 查询会话状态 & 已上传分片索引(断点续传) |
/api/v1/file/upload/chunk |
POST | 上传单个分片(幂等,可重复上传) |
/api/v1/file/upload/complete |
POST | 合并分片为最终文件,校验 MD5 |
/api/v1/file/upload/abort |
POST | 中止会话并清理分片 |
- 新增
chunkedUpload()工具函数,自动切片、并发上传、失败重试、取消支持 - 文件管理页上传:大于 10MB 的文件自动走分片上传,小文件保持普通上传
- 分片进度实时回显到上传进度条
- 登录接口加限流中间件,防止暴力破解
- 分片上传所有路径复用
ResolvePathWithinBase,杜绝路径穿越 - 分片大小严格校验:除最后一片外必须等于 ChunkSize
📋🔍 操作日志审计 + 文件在线预览 + 打包下载
-
操作日志审计系统
- 新增操作日志记录中间件(
OperationLogger),自动记录所有用户操作(上传/下载/删除/重命名/创建文件夹/分享/预览/登录/配置修改等) - 操作日志管理页面,支持分页、多条件筛选(操作类型、用户名、IP、路径、日期范围)
- 操作统计接口,支持按操作类型聚合统计
- 新增操作日志记录中间件(
-
文件在线预览
- 支持文本/代码文件(
.txt,.md,.json,.go,.py,.js等 50+ 种格式)在线查看 - 支持 PDF 文档在线预览
- 支持图片(JPG/PNG/GIF/WebP/SVG)、视频(MP4/WebM)、音频(MP3/WAV/FLAC)在线播放
- 前端预览组件支持全屏模式
- 预览信息接口返回文件类型、大小、是否可预览等元数据
- 支持文本/代码文件(
-
文件打包下载
- 支持多文件选择后打包为 ZIP 下载
- 支持跨子目录文件的批量打包
-
上传增强
- 文件上传支持指定子目录(
dir参数),支持拖拽上传到当前浏览目录 - CORS 头新增
UploadToken允许字段
- 文件上传支持指定子目录(
| 接口 | 方法 | 说明 |
|---|---|---|
/api/v1/file/preview |
GET | 文件在线预览(返回文件内容 + 适当的 Content-Type) |
/api/v1/file/previewInfo |
GET | 获取文件预览元信息(类型、大小、是否可预览) |
/api/v1/file/downloadZip |
POST | 多文件打包 ZIP 下载 |
/api/v1/oplog/list |
GET | 操作日志列表(分页 + 筛选) |
/api/v1/oplog/stats |
GET | 操作统计(按类型聚合) |
- 新增文件预览组件(
FilePreview),支持文本高亮、图片/视频/音频/PDF 内嵌预览 - 新增操作日志管理页面,支持丰富的筛选和操作类型图标展示
- 文件列表页新增预览按钮和批量打包下载功能
📁✨ 文件管理增强 + Dashboard 统计升级
-
文件管理增强
- 子目录导航:面包屑导航支持多级目录浏览,点击文件夹可进入子目录
- 新建文件夹:支持在当前目录下创建新文件夹
- 文件重命名:支持对文件和文件夹进行重命名
- 单个删除:每个文件/文件夹操作列增加删除按钮(文件夹需为空)
- 批量删除:支持多选文件后批量删除
- 文件搜索:文件列表页支持按文件名实时搜索过滤
- 文件类型标签:根据文件扩展名显示彩色类型标签(PDF/DOC/ZIP/图片/代码等)
- 列排序:支持按文件名、大小、修改时间排序
-
Dashboard 统计升级
- 新增「文件 & 分享总览」卡片:文件总数、文件夹数、文件总大小、分享链接统计
- 文件总览通过递归遍历统计,展示格式化的文件大小(KB/MB/GB/TB)
- 分享统计展示有效链接数、总链接数、累计下载次数
-
下载历史记录
- 新增下载历史日志查询接口,支持分页、按文件名/MD5/IP 过滤
| 接口 | 方法 | 说明 |
|---|---|---|
/api/v1/file/delete |
POST | 批量删除文件/文件夹 |
/api/v1/file/mkdir |
POST | 创建文件夹 |
/api/v1/file/rename |
POST | 重命名文件/文件夹 |
/api/v1/statistics/getFileOverview |
GET | 文件总览统计(文件数、目录数、总大小) |
/api/v1/statistics/downloadHistoryLogs |
GET | 下载历史日志(分页+筛选) |
v0.5.0 为 MCP Server 补充了 5 个新 Tool,AI Agent 可通过 MCP 协议完成文件管理全流程:
| MCP Tool | 说明 |
|---|---|
create_folder |
创建文件夹,支持指定父目录 |
rename_file |
重命名文件或文件夹,支持指定所在目录 |
batch_delete_files |
批量删除文件/空文件夹(JSON 数组传参) |
get_file_overview |
文件总览统计(文件数、目录数、总大小) |
get_download_history |
下载历史日志查询(分页+按文件名/MD5/IP 筛选) |
至此 MCP Server 共提供 15 个 Tool + 3 个 Resource,覆盖文件查询、上传、删除、重命名、建目录、统计、校验等完整操作。
- 文件列表页全面重写,支持目录导航、多选操作、分享入口
- Dashboard 页面新增文件 & 分享总览卡片
- 前端 API 层新增完整的类型定义(
FileItem、DeleteFilesParams、CreateFolderParams、RenameFileParams等)
🔒🔗 安全加固 + 文件分享
- 文件分享:支持通过链接分享文件,可设置有效期、下载次数限制和提取码保护
- 分享页面:独立的分享访问页面,支持提取码验证和文件下载
- 分享管理:新增分享管理页面,查看所有分享记录和统计信息
- 匿名访问:分享链接支持匿名下载,无需登录(可配置关闭)
- 修改密码页面:新增独立的修改密码页面,替代原有弹窗
- 密码哈希升级到 bcrypt,旧密码登录时自动无感升级
- 首次登录强制修改默认密码,未改密码前无法使用任何功能
- MCP 开启时强制配置 auth_token,未配置则拒绝启动
- 文件操作全面防护目录穿越和符号链接攻击
- 头像菜单新增「修改密码」入口
- 提取码简化为开关模式,启用后自动生成
- 分享下载体验优化:本地计数更新、次数用完自动禁用按钮
- 下载目录默认值与上传目录统一,开箱即用
- 清理废弃文件,统一日志格式
🎉 重大更新:新增 Web 端系统配置管理!
告别手动编辑配置文件,在浏览器中即可完成所有服务配置的查看和修改。
-
系统配置页面(核心功能)
- 新增独立的「系统配置」管理页面,支持在 Web 界面直接修改服务配置
- 存储路径配置:可视化修改上传/下载子目录,自动路径安全校验(防目录穿越)
- HTTP 服务配置:在线修改后端服务端口,开发模式下自动检测并提示访问端口与服务端口差异
- 文件上传策略:一键开关文件上传、Token 校验,实时调整上传凭证有效期和文件大小限制
- 企业微信 Bot 通知:在线配置 Webhook URL,支持开关控制
- 缩略图配置:动态调整缩略图尺寸(50-2000px)
- 日志级别:在线切换日志级别(Debug ~ Fatal),无需重启
- 配置分为「热更新」和「需重启」两类,清晰标记
-
配置持久化与服务重启
- 所有配置变更自动持久化到 YAML 配置文件
- 需重启的配置(端口、存储路径)支持一键重启流程:保存配置 → 密码验证 → 优雅关闭 → 自动重连检测
- 重启过程全程可视化(保存中 → 重启中 → 重连中 → 完成)
- 后端支持重启信号通道,由 systemd/Docker 自动拉起新进程
-
图片管理增强
- 图片管理页面新增缩略图网格视图模式,支持列表/网格切换
- 网格视图中支持图片预览、下载、删除操作
- 优化图片缩略图加载和展示效果
- 修复进程内存占用过高问题(5.7G → 正常水平)
- 修复 Prometheus Metrics 因 IP 标签导致的时间序列无限增长内存泄漏
- 修复数据库连接池泄漏,全局统一使用单例 DB 连接
- 修复文件下载句柄未关闭导致的文件描述符泄漏
- 修复调试日志异常导致 Token 刷新 goroutine 意外退出
- 启用 pprof 调试端点,便于后续性能分析
-
文件列表页面
- 新增文件列表功能菜单,支持查看上传目录中的文件列表
- 文件列表接口过滤目录,只返回可下载的文件
- 支持按修改时间倒序排列
-
图片上传鉴权
- 图片上传接口同文件上传一样,需要 UploadToken 校验
- 上传图片白名单机制保持与文件上传一致
-
MCP 增强
- 新增
upload_imageTool,支持通过 MCP 上传图片(生成缩略图,可在图片管理页面查看) list_filesTool 修复:过滤目录、按时间倒序排序、新增size_bytes字段
- 新增
-
系统信息增强
- 系统信息页新增工作目录(项目根目录)展示,路径一目了然
- 前端整体优化:清理废弃组件(HeaderSearch、NoticeIcon、swagger 等),精简代码
- 登录页、Token 管理、系统信息等页面 UI 重构优化
static/构建产物从 git 跟踪中移除,遵循最佳实践- 更新 README 项目结构说明,补充
website/、data/等运行时目录
- 新增
scripts/httpcat-api.sh— AK/SK 签名调用示例脚本 - 新增
scripts/search-and-upload-image.sh— 图片搜索上传脚本
-
Open API(AK/SK 签名认证)
- 新增 AK/SK 签名认证机制,支持脚本/CI/AI 直接调用所有 API
- 签名算法基于 HMAC-SHA256,与 AWS Signature V4 行业标准一致
- 支持恒定时间比较防时序攻击、±60 秒时间窗口防重放攻击
-
认证合并中间件
- 新增
TokenOrAKSKAuth合并中间件,同一接口同时支持 JWT 和 AK/SK 两种认证方式 - 白名单机制(upload/download/login)保持不变
- 新增
- README 新增 Open API 完整文档:签名算法、接口列表、调用示例
- 新增 AK/SK 场景下上传文件的端到端流程说明(Shell + Python 示例)
- 新增 POST 请求签名示例(带 JSON Body)
- 新增 OpenClaw + httpcat 联动部署指南
🎉 重大更新:新增 MCP (Model Context Protocol) 支持!
让 AI 助手(如 Claude、Cursor)直接管理你的 HttpCat 文件服务器。
-
MCP Server 集成
- 支持 SSE (Server-Sent Events) 传输协议
- 可与 Claude Desktop、Cursor、CodeBuddy 等 AI 工具集成
- AI 可直接执行文件管理操作,无需手动操作 Web 界面
-
MCP Tools(9个工具)
list_files- 列出上传目录中的文件get_file_info- 获取文件详情(大小、修改时间、MD5)get_upload_history- 查询上传历史记录get_disk_usage- 获取磁盘使用情况upload_file- 通过 MCP 上传文件(需 Token)request_delete_file- 请求删除文件(第一步)confirm_delete_file- 确认删除文件(第二步)get_statistics- 获取上传/下载统计verify_file_md5- 验证文件 MD5 完整性
-
MCP Resources(3个资源)
filelist://current- 当前文件列表disk://usage- 磁盘使用情况system://info- 系统信息
-
安全增强
- MCP 认证支持(可选 Bearer Token)
- 两步删除确认机制,防止误删
- 路径安全检查,防止目录遍历攻击
- 新增
Dockerfile多阶段构建 - 新增
docker-compose.yml一键部署 - 支持数据持久化挂载
- 新增
docs/MCP_USAGE.md- MCP 使用指南(小白友好) - 新增
docs/DEPLOYMENT_STATUS.md- 部署状态文档
在 conf/svr.yml 中新增 MCP 配置项:
server:
mcp:
enable: true # 是否启用 MCP Server
auth_token: "" # MCP 认证 Token(可选){
"mcpServers": {
"httpcat": {
"type": "sse",
"url": "http://your-server:8888/mcp/sse"
}
}
}- 提供独立卸载脚本,方便用户卸载。
- 增加了arm支持。
- 添加文件管理-图片管理功能。
分页、删除、下载、清空、添加
- 支持图片预览
- 支持图片删除 ✔
- 支持图片下载 ✔
- 支持文件名修改
- 图片一键清空 ✔
- 支持图片分页查询 ✔ 图片管理功能,独立于文件上传功能,不需要appkey、appsecret,纯界面操作, 主要的需求场景是:内网环境,需要一个简单的图片管理工具,可以上传、下载、删除图片。 存储位置:默认存储在{配置的上传路径}/images目录下。
- 修复httpcat运行时间
- 前端优化上传文件开关状态图标显示
- 优化打包脚本,自动修改md文件中的版本号。
- 修改配置文件默认监听端口是8888端口。
但是支持通过安装脚本参数指定监听端口号
./install.sh -p 80。 - fix 磁盘空间显示死值。
- 优化日志名,修改为httpcat.log。
注意:本版本开始,前端直接合入安装包,不需要单独下载前端文件。
- 增加web界面增加拖拽上传文件功能。
- 上传文件日志列表添加文件创建时间和文件修改时间。
- 上传文件日志列表,可以点击查看详情,如果文件还在服务器端,支持web界面下载文件。
- 优化首页加载慢问题,以及考虑内网用户使用,不使用cdn源,直接pacakge.json中引入。
- 增加 install.sh一键安装和卸载httpcat。
推荐用户直接使用install.sh安装httpcat。使用到了unzip,如果没有安装unzip,需要先安装unzip。
apt install unzip - 修复磁盘占用饼图显示问题。
- 解决systemctrl启动,卡主问题。
注意该版本配置文件格式有变化,如果使用历史版本配置文件,需要使用新的配置文件。
- 页脚添加显示httpcat版本号
- 上传文件日志列表,可以点击查看详情,并且可以下载文件。
- 展示httpcat配置信息(上传文件路径、下载文件路径,版本信息等)。
- 展示上传统计信息,下载统计信息。
- 上传接口单独使用配置文件配置开关,用户可以关闭上传能力。
- 支持下载统计、下载日志入库。
本版本是带界面的,功能比较完善的一个版本,可以满足日常工作环境使用。
- curl界面提醒根据当前ip和端口修改curl命令
- 前端细节优化 生产环境中取消显示SettingDrawer curl界面提醒根据当前ip和端口修改curl命令
- 修复上传日志查询分页问题
- 上传历史日志,添加appkey字段,这样可以区分不同的appkey上传的文件。
- 上传历史日志,支持ip、appkey过滤查询。
- fix bug: appkey开启和关闭能力。
- 支持修改管理员密码。
- 修复页面F5刷新404问题。
- 增加了上传token管理能力,可以给不同用户或平台配置不同的appkey、appsecret,生成不同的上传token。
- 下载接口wget使用说明。
- 自定义appkey、appsecret,生成上传token 以及上传校验实现。
- 支持用户账号密码登录
- 添加了界面,可以登录查询、删除上传历史日志
- 更新英文README.md
- 开启sqlite情况下,支持web接口查询上传历史记录
- 命令行-v参数查看版本信息
- 支持上传历史记录sqlite存储
- 开启sqlite配置,上传历史记录会存储在sqlite数据库中
- 增加了上传凭证功能:
- 根据ak、sk生成独立的上传token凭证,上传文件时候,附带token,服务端会校验token是否合法。
- 上传成功通知业务服务器的URL支持
- 当上传文件任务完成时,系统会向设置的 persistentNotifyUrl 发送 POST 请求,通知处理结果。您可以将实际的通知 URL 替换成您的有效 URL,以便接收通知。
- 经过测试,支持企业微信webhook通知,配置文件中配置企业微信webhook地址,上传成功后,会发送企业微信通知。
- 增加了p2p能力:
- 节点发现 目前只支持局域网内部节点发现。使用mDNS进行节点发现
- 通过http发送向节点监听的主题发送任意消息 通过配置文件配置节点监听的主题,可以通过http接口,发布消息 暂时没有想到好的应用场景,配置默认是关闭,如果你不使用p2p可以忽略。
- 优化文件上传超时问题,可以参数配置超时时间 由于需要上传下载大文件,需要设置较长的读写超时,因此需要使用http.Server
- 添加获取文件信息接口(包含md5)
- 添加获取目录配置信息接口
- 新增systemd配置文件
- httpcat基本可用版本
- 通过灵活配置 static、下载目录、上传目录,可以满足日常工作环境使用。 可以用作你web服务器,可以用作你内网上传下载文件需求,非常简单易用。