# file_server **Repository Path**: jimonik/file_server ## Basic Information - **Project Name**: file_server - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-17 - **Last Updated**: 2026-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 本地文件服务器 仓库地址: 基于 Python 3.12 标准库的轻量文件服务器,提供目录浏览、拖放/多文件上传、新建文件夹、单个及批量移动、重命名、删除、单文件下载、文件夹一键打包下载、跨目录批量打包下载,以及不依赖扩展名的 UTF-8/ASCII 纯文本预览和在线编辑功能。 本项目是控制面板中唯一负责文件浏览和文件操作的插件;编译器插件不再重复实现这部分能力。 ## 作为控制面板插件 面板入口为 `panel_plugin.py`,导出 `create_app(context)` 并返回 FastAPI 应用。插件由本体挂载在 `/plugins/file-server/`,不会自行监听端口,局域网设备仍只访问本体的 `8000` 端口。 仓库根目录的 `panel-plugin.json` 是插件身份清单。使用者只需在面板底部选择本仓库文件夹,面板会自动识别、加入并启用,不需手写配置。 插件模式依赖 `fastapi`(由面板统一安装),数据目录为仓库内的 `files/`。前端资源和 API 均使用相对 URL,以兼容挂载前缀。独立运行的 `main.py` 仅用于该仓库单独调试;被面板加载时不会执行它。 插件接收本体发送的 `lan-panel-theme` 消息并支持 `light`、`dark` 两种主题,不自行跟随系统主题。 ## 启动 项目使用已有的 `py312` Conda 环境,不需要安装第三方依赖: ```bash conda activate py312 python main.py ``` 浏览器打开 。按 `Ctrl+C` 停止服务。 服务默认监听 `0.0.0.0`,同一局域网中的设备可通过运行服务器电脑的 IP 访问,例如 。 服务器固定只共享项目中的 `files` 目录: ```text /Users/jimo/PycharmProjects/file_server/files ``` 把需要下载的文件放入这个目录即可。 如果还没有环境,可以先创建: ```bash conda env create -f environment.yml ``` 如需明确指定监听地址和端口,可运行: ```bash python main.py --host 0.0.0.0 --port 8000 ``` 单个文件默认最多上传 10 GB,可通过参数调整,例如: ```bash python main.py --max-upload-gb 20 ``` 然后在其他设备访问 `http://运行服务器的电脑IP:8000`。删除文件夹时会同时删除其中的所有内容。请只在可信网络中使用局域网模式;服务没有登录认证,任何能够访问服务的设备都可以管理共享文件。 ## 下载性能 单文件及打包后的 ZIP 使用 `socket.sendfile()` 发送,在系统支持时走操作系统文件传输路径,不支持时由 Python 自动回退。视频、图片、已有压缩包等常见压缩格式在 ZIP 中直接存储,其余文件采用一级快速压缩,减少开始下载前的打包等待;生成的 ZIP 可能略大于原先默认压缩级别的结果。 打包仍需在服务端完成后开始传输,网页目前也会接收完整 ZIP 后交给浏览器保存。实际下载速度受网络带宽和磁盘速度影响。修改后需重启 Python 服务生效。 下载回归检查:`python3 -m unittest discover -s tests -v`。