# WebDAV 文件服务器 **Repository Path**: LinmengenData/webdav-server ## Basic Information - **Project Name**: WebDAV 文件服务器 - **Description**: 支持挂载电脑内的所有磁盘 - **Primary Language**: Python - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-01 - **Last Updated**: 2025-10-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WebDAV 文件服务器 一个基于 Flask 的轻量级 WebDAV 文件服务器,提供完整的文件管理和在线浏览功能。 ## 功能特性 ### 🗂️ 文件管理 - **完整的 WebDAV 协议支持** - PROPFIND、PROPPATCH、MKCOL、COPY、MOVE 等 - **在线文件浏览** - 支持目录列表和文件预览 - **大文件支持** - 支持分块传输和断点续传 - **批量下载** - 支持整个目录的 ZIP 打包下载 - **权限管理** - 基于用户的访问控制 ### 🔐 安全认证 - **基本认证** - HTTP Basic Authentication - **会话管理** - Flask Session 支持 - **密码加密** - 使用 Werkzeug 安全哈希 - **路径安全** - 防止目录遍历攻击 ### 🚀 高性能 - **流式传输** - 支持大文件流式读写 - **内存优化** - 智能分块处理,降低内存占用 - **多线程支持** - 使用 Waitress 生产级服务器 ## 安装部署 ### 环境要求 - Python 3.7+ - Flask 及相关依赖 ### 快速开始 1. **克隆项目** ```bash git clone cd webdav-server ``` 2. **安装依赖** ```bash pip install -r requirements.txt ``` 3. **配置用户** 在 `main.py` 中修改 `USERS` 字典: ```python USERS = { 'username': generate_password_hash('your_password') } ``` 4. **运行服务器** ```bash python main.py ``` ### 生产部署 取消注释 `main.py` 底部的 Waitress 配置(注释前面的 `app.run(...)`): ```python waitress.serve(app, host='127.0.0.1', port=5002, threads=64, max_request_body_size=1e10, connection_limit=1e10, channel_timeout=1e10) ``` ## API 接口 ### WebDAV 方法 - `PROPFIND` - 获取目录和文件属性 - `PROPPATCH` - 修改文件属性 - `MKCOL` - 创建目录 - `GET` - 下载文件 - `PUT` - 上传文件 - `DELETE` - 删除文件或目录 - `COPY` / `MOVE` - 复制/移动文件 ### 特殊功能 - `GET ?simple=1` - 简单目录列表 - `GET ?zip=1` - 下载目录为 ZIP - `GET ?size=1` - 获取目录压缩大小 - `LOGOUT` - 用户登出 ## 配置说明 ### 文件系统配置 在 `filesystem.py` 中设置基础路径: ```python base_path = '/' # 设置为您的文件根目录 ``` ### 服务器配置 - 默认端口:5002 - 默认绑定:0.0.0.0(所有接口) - 支持 IPv4/IPv6 ## 使用示例 ### 1. 网页访问 访问 `http://localhost:5002` 使用网页界面浏览和管理文件。 ### 2. WebDAV 客户端 使用支持 WebDAV 的客户端连接: - 地址:`http://localhost:5002` - 用户名/密码:在 USERS 中配置的凭据 ### 3. 命令行操作 ```bash # 使用 curl 测试 curl -X PROPFIND http://localhost:5002/ -u username:password ``` ## 项目结构 ``` webdav-server/ ├── filesystem.py # 文件系统操作封装 ├── main.py # Flask 应用主程序 ├── templates/ # HTML 模板文件 └── static/ # 静态资源文件 ``` ## 技术栈 - **后端框架**:Flask - **WebDAV 实现**:自定义 XML 处理 - **文件操作**:Python os/shutil 模块 - **压缩支持**:zipstream - **生产服务器**:Waitress - **安全认证**:Werkzeug Security ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request! ## 注意事项 - 请在生产环境中修改默认密码 - 建议配置 HTTPS 以保障传输安全 - 大文件操作时注意服务器资源使用