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 文件服务器
  • 随机生成访问令牌,保障访问安全
  • 一键复制访问地址,方便分享给局域网内其他设备

在线预览(Web 端)

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

下载

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

安全与性能

  • 访问令牌鉴权,防止未授权访问
  • 文件访问路径强校验,仅可访问共享列表内的文件
  • 文件流式传输,不占用额外内存
  • 支持 Range 请求,音视频支持拖动进度条
  • 引用原文件路径,不复制文件,不占用额外存储空间

快速开始

安装

  • 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 操作)

技术细节

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 后端服务
├── src/
│   ├── App.vue                   # 根组件
│   ├── main.ts                   # 应用入口
│   ├── main.css                  # 全局样式
│   ├── env.d.ts                  # 类型定义
│   ├── share/
│   │   └── types.ts              # 共享类型定义
│   └── Share/
│       ├── index.vue             # 主管理界面
│       ├── FileTree.vue          # 递归文件树
│       ├── ShareItem.vue         # 共享条目行
│       ├── NetworkSelector.vue   # 网卡选择器
│       └── ConfirmDialog.vue     # 确认弹窗
├── docs/
│   └── 分享链接方案.md            # 限时/一次性/密码分享链接设计方案
├── 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