# html自动部署
**Repository Path**: excelsiorly/html-automatic-deployment
## Basic Information
- **Project Name**: html自动部署
- **Description**: 简易HTML自动部署服务器
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-01-20
- **Last Updated**: 2026-01-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# HTML聚合网站后端服务
## 项目概述
HTML聚合网站后端服务是一个基于Flask的Web应用,用于上传、管理和分享HTML文件。它支持自动处理外部资源,如CSS、JS、图片和字体文件,并将它们本地存储,确保HTML文件可以在离线环境下正常访问。
## 功能特性
### 1. 文件上传与管理
- 支持HTML文件上传
- 自定义访问路径
- 项目名称管理
- 文件编辑和删除
### 2. 外部资源处理
- **CSS文件**:自动下载并本地存储
- **JavaScript文件**:自动下载并本地存储
- **图片文件**:自动下载并本地存储
- **字体文件**:支持多种字体格式(eot, woff2, woff, ttf, svg)
- **相对路径处理**:自动转换相对路径为绝对URL
### 3. 局域网访问
- 自动获取本地IP地址
- 支持局域网内其他设备访问
- 生成可分享的访问链接
### 4. 安全特性
- 支持自定义访问路径,避免冲突
- 文件扩展名验证
- 资源URL验证
- 错误处理和日志记录
### 5. 用户体验
- 直观的Web界面
- 实时路径可用性检查
- 删除确认机制
- 友好的错误提示
## 技术栈
- **后端框架**:Flask 2.x
- **开发语言**:Python 3.6+
- **依赖管理**:pip
- **数据存储**:本地文件系统 + JSON元数据
- **网络请求**:requests库
- **HTML解析**:正则表达式
## 目录结构
```
it-html/
├── app.py # 主应用程序
├── templates/ # HTML模板
│ ├── index.html # 首页模板
│ ├── upload.html # 上传/编辑模板
│ └── 404.html # 404错误模板
├── uploads/ # 上传文件存储目录
│ └── [项目路径]/ # 每个项目的独立目录
│ ├── [main.html] # 主HTML文件
│ └── resources/ # 外部资源存储
├── metadata.json # 项目元数据
├── requirements.txt # 依赖列表
├── README.md # 项目文档
└── DEPLOY.md # 部署文档
```
## 核心功能说明
### 1. 资源处理流程
1. **上传HTML文件**:用户上传HTML文件,可选自定义路径
2. **解析外部资源**:
- 查找HTML中的CSS、JS、图片引用
- 解析CSS文件中的字体引用
- 识别@font-face规则
3. **下载资源**:将外部资源下载到本地
4. **替换URL**:将HTML和CSS中的外部URL替换为本地路径
5. **保存文件**:保存处理后的HTML和资源文件
6. **记录元数据**:更新项目元数据
### 2. 路径管理
- 支持自定义访问路径
- 实时检查路径可用性
- 支持路径修改和重命名
- 自动生成唯一路径(基于文件名和时间戳)
### 3. 资源类型支持
| 资源类型 | 支持格式 | 处理方式 |
|---------|---------|---------|
| CSS | .css | 下载并本地存储 |
| JS | .js | 下载并本地存储 |
| 图片 | .jpg, .jpeg, .png, .gif, .svg, .webp | 下载并本地存储 |
| 字体 | .eot, .woff2, .woff, .ttf, .svg | 下载并本地存储 |
## API接口文档
### 1. 上传文件
- **URL**: `/upload`
- **方法**: POST
- **参数**:
- `file`: HTML文件
- `path`: 自定义访问路径(可选)
- `project_name`: 项目名称(可选)
- **返回**: JSON响应,包含访问URL和资源处理结果
### 2. 编辑文件
- **URL**: `/edit/`
- **方法**: POST
- **参数**:
- `action`: 操作类型(update/delete)
- `path`: 新访问路径(可选)
- `project_name`: 新项目名称(可选)
- `file`: 新HTML文件(可选)
- **返回**: JSON响应,包含操作结果
### 3. 检查路径可用性
- **URL**: `/api/check-path`
- **方法**: GET
- **参数**:
- `path`: 要检查的路径
- `exclude`: 要排除的路径(可选)
- **返回**: JSON响应,包含路径可用性
### 4. 获取服务器IP
- **URL**: `/api/ip`
- **方法**: GET
- **返回**: JSON响应,包含服务器IP和URL
### 5. 获取文件列表
- **URL**: `/api/files`
- **方法**: GET
- **返回**: JSON响应,包含所有已上传文件信息
### 6. 扫描资源
- **URL**: `/api/scan-resources/`
- **方法**: GET
- **返回**: JSON响应,包含HTML中的外部资源列表
### 7. 上传资源
- **URL**: `/api/upload-resource/`
- **方法**: POST
- **参数**:
- `file`: 资源文件
- `original_url`: 原始URL
- `type`: 资源类型
- **返回**: JSON响应,包含上传结果
## 配置说明
### 1. 应用配置
| 配置项 | 默认值 | 说明 |
|-------|-------|------|
| UPLOAD_FOLDER | 'uploads' | 上传文件存储目录 |
| METADATA_FILE | 'metadata.json' | 元数据存储文件 |
| ALLOWED_EXTENSIONS | {'html', 'htm'} | 允许上传的文件扩展名 |
| MAX_CONTENT_LENGTH | 50MB | 最大文件大小限制 |
| PORT | 15555 | 服务器监听端口 |
### 2. 自定义配置
可以通过修改`app.py`文件中的配置项来自定义应用行为:
```python
app.config['UPLOAD_FOLDER'] = 'custom_uploads' # 自定义上传目录
app.config['MAX_CONTENT_LENGTH'] = 100 * 1024 * 1024 # 100MB文件大小限制
```
## 快速开始
### 1. 安装依赖
```bash
pip install -r requirements.txt
```
### 2. 启动应用
```bash
python app.py
```
### 3. 访问应用
- 本地访问: http://localhost:15555
- 局域网访问: http://[本地IP]:15555
## 开发说明
### 1. 模板修改
所有HTML模板位于`templates/`目录下,可以根据需要修改模板内容和样式。
### 2. 功能扩展
可以通过修改`app.py`文件来扩展应用功能,例如:
- 添加新的资源类型支持
- 修改资源处理逻辑
- 添加新的API接口
- 修改存储方式
### 3. 测试
可以使用以下方式测试应用:
```bash
# 上传测试文件
python upload_test.py
# 测试删除功能
python test_delete.py
# 测试路径检查
python test_check_path.py
```
## 注意事项
1. 确保应用有足够的权限访问上传目录
2. 定期备份`uploads/`目录和`metadata.json`文件
3. 建议在生产环境中使用WSGI服务器(如Gunicorn)
4. 注意文件大小限制,避免上传过大的文件
5. 定期清理不再使用的项目和资源文件
## 许可证
MIT License
## 作者
HTML聚合网站开发团队
## 更新日志
### v1.0.0
- 初始版本发布
- 支持HTML文件上传和管理
- 支持CSS、JS、图片资源处理
- 支持自定义访问路径
### v1.1.0
- 添加字体文件支持
- 修复删除功能问题
- 优化用户体验
- 添加路径检查API
### v1.2.0
- 修改默认端口为15555
- 完善错误处理
- 优化资源处理逻辑
- 添加详细的项目文档
## 贡献
欢迎提交Issue和Pull Request!