# 可以生成本地http共享文件的服务器 **Repository Path**: sqmmr/local-http-file-server ## Basic Information - **Project Name**: 可以生成本地http共享文件的服务器 - **Description**: 一个轻量级的本地HTTP服务器,用于快速共享文件,使用Python。适用于简易测试验证 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-12 - **Last Updated**: 2026-06-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HTTP 文件下载服务 本地 HTTP 文件下载服务器,启动后可通过浏览器访问,实现文件的浏览和下载功能。 ## 📁 项目结构 ``` http_host_code/ ├── file_server.py # 主程序入口 ├── handler.py # HTTP 请求处理器 ├── server.py # TCP 服务器配置 ├── port_utils.py # 端口工具模块 ├── utils.py # 通用工具函数 ├── config.py # 全局配置管理 ├── open/ # 默认共享目录(需手动创建) └── README.md # 项目说明文档 ``` ## 🚀 快速开始 ### 环境要求 - Python 3.6+ - Windows 系统 ### 准备工作 1. 在项目目录下创建 `open` 文件夹 2. 将需要共享的文件放入 `open` 文件夹中 ### 启动服务 #### 方式一:直接运行 Python 脚本 ```bash python file_server.py ``` 默认使用 **8000 端口**,共享 `open` 文件夹。 #### 方式二:使用批处理文件 ```bash start_server.bat ``` ### 批处理文件说明 | 文件名 | 说明 | |--------|------| | `start_server.bat` | 启动 HTTP 文件下载服务 | | `release_port_8000.bat` | 释放被占用的 8000 端口 | ### 访问服务 启动后在浏览器中访问: - **本机访问**: http://localhost:8000 - **局域网访问**: http://[本机IP]:8000 ## 📋 功能特性 - ✅ 文件列表展示(支持文件夹层级浏览) - ✅ 文件下载(支持中文文件名) - ✅ 自动检测端口占用,智能切换可用端口 - ✅ 支持局域网访问 - ✅ 美观的现代化 UI 界面 - ✅ 防止目录遍历攻击的安全检查 - ✅ 跳过隐藏文件显示 ## ⚙️ 命令行参数 | 参数 | 说明 | 默认值 | |------|------|--------| | `-p`, `--port` | 指定服务端口号 | 8000 | | `-d`, `--directory` | 指定共享目录路径 | ./open | ### 使用示例 ```bash # 使用默认配置(端口 8000,共享 open 目录) python file_server.py # 使用自定义端口 8080 python file_server.py -p 8080 # 使用自定义端口 9000 python file_server.py --port 9000 # 指定共享目录 python file_server.py -d D:\SharedFiles # 同时指定端口和目录 python file_server.py -p 8080 -d D:\SharedFiles ``` ## 🛠️ 端口释放 如果 8000 端口被占用,可以使用批处理文件释放端口: ```bash release_port_8000.bat ``` 或者服务会自动检测并切换到下一个可用端口(8001、8002...)。 ## 📂 模块说明 ### file_server.py 主程序入口,负责: - 解析命令行参数 - 设置共享目录 - 启动 HTTP 服务器 ### handler.py HTTP 请求处理器,负责: - 处理 GET 请求 - 生成文件列表 HTML 页面 - 提供文件下载服务 - 安全检查(防止目录遍历) ### server.py TCP 服务器配置,负责: - 创建支持地址复用的 TCP 服务器 - 允许局域网内其他设备访问 ### port_utils.py 端口工具模块,负责: - 检测端口是否可用 - 查找可用的端口号 ### utils.py 通用工具函数,包含: - 文件大小格式化(B/KB/MB/GB/TB) - 获取本机局域网 IP 地址 ### config.py 配置管理模块,负责: - 存储全局共享根目录路径 - 提供设置和获取共享目录的接口 ## 🔒 安全说明 - 服务会检查请求路径,防止目录遍历攻击 - 自动跳过隐藏文件(以 `.` 开头的文件) - 仅允许访问指定共享目录及其子目录中的文件 ## 💡 常见问题 ### Q: 如何停止服务? A: 在运行终端中按 `Ctrl+C` 即可停止服务。 ### Q: 为什么无法访问 8000 端口? A: 可能端口已被占用,服务会自动切换到 8001 或其他可用端口,请查看启动日志确认实际端口号。 ### Q: 如何让局域网其他人访问? A: 服务默认绑定到所有网络接口(0.0.0.0),局域网内的其他设备可以通过你的本机 IP 地址访问。 ### Q: 支持上传文件吗? A: 当前版本仅支持文件下载,不支持上传功能。 ## 📝 更新日志 - **v2.0** - 模块化重构 - 将单文件拆分为多个独立模块 - 优化代码结构和可维护性 - 功能保持不变 - **v1.0** - 初始版本 - 基础文件下载功能 - 端口自动检测 - 局域网访问支持