Skip to content

Repository files navigation

Logo

z-share

适配 ZTools 的局域网文件共享插件


更新日志


功能一览

文件共享管理

  • 通过系统文件对话框多选文件或文件夹进行共享
  • 拖拽文件或文件夹到插件窗口即可快速共享
  • 支持文件夹层级展示,共享目录结构一目了然
  • 文件夹内文件超过 20 个时弹出确认提示,防止误操作
  • 实时开关单个文件/文件夹的共享状态
  • 一键删除不需要的共享条目

文件接收(客户端上传)

  • Web 页面点击「上传文件」或拖拽文件到页面即可回传文件到电脑
  • 上传的文件自动加入共享列表,其他访问者同样可见
  • 上传去重:内容相同的文件自动跳过并提示「已上传」;同名不同内容可一键「覆盖 / 重命名 / 跳过」
  • 上传文件落盘至「下载/z-share-uploads」目录,文件名自动消毒去重
  • 删除上传条目时同步清理磁盘拷贝(Web 端与插件主界面均生效),不留孤儿文件
  • Web 页面按来源 IP 分组展示:主机共享与各客户端上传互不混杂
  • 插件主界面同样按「主机共享 / 客户端上传·IP」分组展示
  • 上传者可在 Web 页面删除自己上传的文件(严格按来源 IP 校验,其他 IP 无法删除)
  • 上传进度实时展示,单个请求上限 2GB

网络配置

  • 自动检测所有可用网卡及对应 IP 地址
  • 支持手动选择绑定的网卡和 IP
  • 端口可配置,启动时检测端口占用并给出提示
  • 一键自动选择空闲端口
  • 一键启动/停止 HTTP 文件服务器
  • 随机生成访问令牌,保障访问安全
  • 一键复制访问地址,方便分享给局域网内其他设备

点对点私密共享

  • 远程访问者可按来源 IP 向主机申请点对点私密连接,插件端实时收到申请通知并可同意/拒绝
  • 同意后双方建立类 QQ 的私密对话:文本消息、一次多文件发送(合并为一条消息)、文件上传/下载/在线预览
  • 支持离线消息与文件的投递、实时消息通知(Web 端 SSE + 插件端系统通知)
  • 双方均可删除单条消息(服务端留存同步删除、收到的文件同步清理)或删除整个私密连接,删除结果双方可见

本机访问与管理

  • Web 页面识别是否在插件宿主机浏览器访问,头部显示「本机访问 / 远程访问」标识
  • 本机访问时 Web 页面通过左侧「文件 / 消息」菜单切换:消息页与插件端一致地管理、查看点对点对话(同意/拒绝申请、聊天、文件收发)
  • 本机页面可查看下载/上传日志、管理 IP 白名单(头部图标按钮),在浏览器侧完成部分插件端操作

在线预览(Web 端)

  • 文件树浏览,支持层级展开折叠
  • 文件名实时搜索过滤,匹配目录自动保留父级结构
  • 文本文件在线预览,带行号显示
  • 代码文件语法高亮(支持 JavaScript、Python、Java、Go、Rust 等 30+ 语言)
  • Markdown 文件支持渲染视图和源码视图切换
  • 图片文件直接展示
  • 音频文件 HTML5 播放器在线播放
  • 视频文件 HTML5 播放器在线播放
  • PDF 文件内嵌预览
  • 亮色/暗色主题切换

下载

  • 单文件直接下载
  • 目录一键打包 ZIP 下载(服务端流式压缩,不占磁盘不占内存)
  • 多选文件/目录打包下载、全部打包下载
  • 下载日志与上传日志统一记录(含类型、IP、时间)

安全与性能

  • 访问令牌鉴权,防止未授权访问
  • 本机回环访问(127.0.0.1 / ::1)默认免 Token;局域网 IP 访问仍需 Token
  • 文件访问路径强校验,仅可访问共享列表内的文件
  • 文件流式传输,不占用额外内存
  • 支持 Range 请求,音视频支持拖动进度条
  • 引用原文件路径,不复制文件,不占用额外存储空间

功能截图

点击展开截图

插件主页

共享文件预览

客户端页面

客户端申请私密连接

私密连接申请消息

私密消息-客户端界面

私密消息-插件界面

私密消息-web界面

快速开始

安装

  • ZTools 插件市场搜索 文件共享,点击安装

开发

npm install
npm run dev      # 启动开发服务器
npm run build    # 构建生产版本

触发方式

在 ZTools 中输入以下关键词即可唤起:

共享文件 · share · 文件共享 · zshare

也可以直接拖拽文件或文件夹到 ZTools 搜索框实现快速共享。

指令说明

指令 类型 说明
共享文件 / share / 文件共享 / zshare text 打开插件主窗口
拖拽文件/文件夹 files 快速共享文件

使用说明

  1. 在 ZTools 中输入 共享文件 打开插件
  2. 点击「添加文件」选择文件/文件夹,或直接拖拽到窗口
  3. 在上方下拉菜单中选择要绑定的网卡 IP,按需调整端口
  4. 点击「启动服务」开启 HTTP 文件服务器
  5. 复制访问地址发送给局域网内其他设备
  6. 其他设备在浏览器中打开该地址即可浏览、预览、下载文件
  7. 其他设备在页面点击「上传文件」或拖拽文件到页面,即可把文件回传到电脑(按 IP 分组展示)
  8. 上传者在 Web 页面点击文件旁的删除按钮,即可删除自己上传的文件(仅限同一 IP 操作)
  9. 点对点私密共享:其他设备在页面点击「私密连接」→ 填写昵称与留言 → 申请连接;插件端收到申请后点「消息」→ 同意/拒绝;同意后双方进入私密对话,可发文本、一次多文件发送、上传/下载/预览
  10. 本机管理:在插件主机本机浏览器打开页面时,页面左侧出现「文件 / 消息」菜单,消息页与插件端一致地管理点对点对话;头部「下载日志」「IP 白名单」图标按钮可查看日志与管理白名单

技术细节

HTTP 文件服务器

基于 Node.js http 模块实现的轻量级文件服务器。支持流式文件传输(fs.createReadStream)、HTTP Range 请求、访问令牌鉴权、CORS 跨域支持、自定义端口和绑定 IP。

文件扫描与索引

添加文件夹时,插件会递归扫描所有子文件和子目录,构建完整的层级树结构。扫描过程会跳过隐藏文件(以 . 开头的文件/文件夹)。扫描结果持久化存储在 ZTools 的 dbStorage 中。

Web 预览界面

外部 Web UI 是一个完全自包含的 HTML 文件,内联了所有 CSS 和 JavaScript,无需任何外部依赖。内置了轻量级 Markdown 解析器和代码语法高亮器,即使在无互联网连接的局域网环境中也能正常使用。

项目结构

├── public/
│   ├── plugin.json               # ZTools 插件配置
│   ├── logo.png                  # 插件图标
│   ├── web/
│   │   └── index.html            # 外部 Web 预览界面(含点对点对话与本机管理台)
│   └── preload/
│       ├── package.json
│       └── services.js           # Node.js 后端服务(HTTP + P2P 实时通道)
├── src/
│   ├── App.vue                   # 根组件
│   ├── main.ts                   # 应用入口
│   ├── main.css                  # 全局样式
│   ├── env.d.ts                  # 类型定义
│   ├── share/
│   │   └── types.ts              # 共享类型定义
│   └── Share/
│       ├── index.vue             # 主管理界面
│       ├── FileTree.vue          # 递归文件树
│       ├── ShareItem.vue         # 共享条目行
│       ├── NetworkSelector.vue   # 网卡选择器
│       ├── ConfirmDialog.vue     # 确认弹窗
│       └── P2pCenter.vue         # 点对点消息工作台(会话列表 + 对话窗口)
├── test/
│   └── smoke.cjs                 # 后端冒烟测试
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── package.json
├── tsconfig.json
├── vite.config.js
└── README.md

开源协议

GPLv3


About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages