| 类别 | 特性 |
|---|---|
| 📂 文件夹分享 | 后台文件树浏览,勾选文件夹/文件一键生成分享链接 |
| 🔑 提取码保护 | 可选提取码,访问时需要验证 |
| ⏰ 过期策略 | 精确到秒的过期时间 + 最大访问次数上限,超时自动失效 |
| 🛡️ SVG 验证码 | 服务器端生成,算术/字符两种模式,提取/下载可分别控制 |
| 🖼️ 在线预览 | 图片 / 视频 / 音频 / 文本 / Markdown / 代码内联预览 |
| 📦 智能下载 | 单文件直接下载,多文件/文件夹自动流式 ZIP 打包 |
| 🎨 毛玻璃 UI | 蓝色渐变主题,磨砂玻璃效果卡片,可收起侧栏 |
| 🔐 JWT 认证 | Token 认证 + bcrypt 密码哈希,安全可靠 |
| 🔤 编码自适应 | 自动检测 UTF-8/GBK 编码,中文文本不乱码 |
| 🔗 域名绑定 | 自定义域名生成分享链接 |
| 📎 KKFileView 对接 | 可选集成,实现 Office 文档在线预览 |
| 🔄 日志轮转 | 自动保持最近日志,方便排查 |
| 📱 响应式布局 | 桌面端/手机端自适应,侧栏滑入遮罩,超宽内容横向滚动 |
| 🚀 一键安装 | 环境检测 + 端口配置 + 依赖安装 + 启动引导 |
| 页面 | 说明 |
|---|---|
| 首页 | 提取文件入口 + SVG 验证码 |
| 管理后台 | 文件浏览、创建分享、分享管理、系统设置 |
| 分享页 | 树形文件浏览、在线预览、下载、提取码验证 |
- Node.js ≥ 16.x(推荐 18+)
- npm(随 Node.js 安装)
node -v # 应显示 v16.x.x 或更高
npm -v # 应显示 8.x.x 或更高- 解压
unzip FileShare.zip -d /optcd /opt/FileShare- 安装(引导式:检测环境 → 设置端口 → 安装依赖 → 启动)
sudo chmod +x install.shbash install.sh #或./install.sh安装过程交互引导:
- ✅ 检测 Node.js/npm/curl 等工具,缺失时询问是否自动安装
- 🔌 设置 HTTP 服务端口
- 📦 自动安装 npm 依赖
- 🚀 可选立即启动服务
bash run.sh start # 启动
bash run.sh stop # 停止
bash run.sh restart # 重启
bash run.sh status # 查看状态
bash run.sh log # 查看日志| 页面 | 地址 | 用途 |
|---|---|---|
| 🏠 首页 | http://你的IP:端口 |
提取文件入口 |
| 🔧 管理后台 | http://你的IP:端口/admin |
管理分享、系统设置 |
| 🔗 分享页 | http://你的IP:端口/s/{分享码} |
分享展示 |
默认管理员: admin / admin123
⚠️ 首次登录会强制要求修改密码。
- 使用初始密码登录,重置密码
- 去后台-账户安全-修改用户名
- 去系统设置-设置分享域名-设置内容设置和文件扫描路径
- 去预览设置-设置预览模式
- 去创建分享-选取文件,设置分享配置,分享测试
- 左侧导航 → 「创建分享」
- 浏览文件树,勾选需要分享的文件或文件夹
- 可选设置:提取码、过期时间、最大访问次数
- 点击「创建分享」生成链接
「系统设置」→ 验证码设置卡片:
- 总开关:关闭后所有验证码不生效,子选项自动隐藏
- 类型:算术验证码 / 字符验证码
- 提取前验证:首页提取文件时验证
- 下载前验证:分享页下载文件时验证
「预览设置」页面:
- 预览模式:系统预览 / 自定义预览(KKFileView)
- 可预览后缀:逗号分隔自定义
- KKFileView 地址:Office 文档在线预览需配置
「分享记录」页面:查看/编辑/删除/搜索分享,一键清理失效分享。
- 桌面端:侧栏 ☰ 可收起为仅图标模式(60px)
- 手机端:左上角 ☰ 滑入侧栏,点击遮罩关闭
# 方式一:重跑安装脚本
bash install.sh
# 方式二:手动修改
bash run.sh stop
sed -i 's/const PORT = [0-9]*/const PORT = 8080/' server.js
bash run.sh startserver {
listen 80;
server_name share.example.com;
client_max_body_size 0;
location / {
proxy_pass http://127.0.0.1:6606;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}配置后,管理后台 → 分享设置 → 域名绑定填入 share.example.com。
cp data/fileshare.db data/fileshare.db.bak # 备份
cp data/fileshare.db.bak data/fileshare.db # 恢复
bash run.sh restart # 重启(crontab -l 2>/dev/null; echo '*/5 * * * * curl -s -m 5 http://127.0.0.1:6606/api/ping -o /dev/null -w "%{http_code}" | grep -q "200" || /opt/FileShare/run.sh start >/dev/null 2>&1'; echo '@reboot sleep 10 && /opt/FileShare/run.sh start >/dev/null 2>&1') | crontab -cd /opt/FileShare
bash uninstall.sh # 停止服务 + 清理 crontab
rm -rf /opt/FileShare # 完全删除💡 如需保留数据,先备份
data/fileshare.db。
| 类型 | 格式 |
|---|---|
| 图片 | jpg, jpeg, png, gif, bmp, webp, svg, ico, tiff, avif, heic |
| 视频 | mp4, webm, ogg, mov, avi, mkv, flv, wmv, 3gp |
| 音频 | mp3, wav, aac, flac, m4a, wma |
| 文本/代码 | txt, md, log, json, xml, yaml, csv, js, ts, py, java, go, rs, php 等 70+ 种 |
📝 编码自适应:自动检测 UTF-8/GBK 编码,中文 TXT 不乱码。
| 层 | 技术 |
|---|---|
| 后端 | Node.js + Express |
| 数据库 | SQLite (better-sqlite3) |
| 前端 | 原生 HTML/CSS/JS(零框架依赖) |
| 认证 | JWT + bcrypt |
| 验证码 | svg-captcha(SVG 生成,算术/字符模式) |
| 打包 | archiver(流式 ZIP) |
| 编码检测 | iconv-lite |
| 部署 | 单机单进程,crontab 保活 |
FileShare/
├── server.js # 主程序
├── package.json # 依赖配置
├── install.sh # 安装脚本
├── run.sh # 管理脚本
├── uninstall.sh # 卸载脚本
├── .gitignore
├── public/
│ ├── index.html # 首页(提取文件)
│ ├── admin.html # 管理后台
│ └── share.html # 分享页
├── data/ # 运行时数据
├── logs/ # 运行日志
└── uploads/ # 上传文件