# videoface-api **Repository Path**: portable/videoface-api ## Basic Information - **Project Name**: videoface-api - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-16 - **Last Updated**: 2025-04-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ```markdown # Secure Video/Image Upload Server 基于 Go 编写的简洁高效的 HTTPS 文件上传服务,支持视频与图片的上传,支持分片上传与合并,适用于大文件上传的场景。 --- ## 🚀 功能特性 - 支持视频与图片上传 - 支持大文件的分片上传和自动合并 - 支持按日期自动归档存储 - 支持 MIME 类型与扩展名双重校验 - 支持 CORS,适配 Web 前端上传 - 内置 HTTPS 启动能力(含证书路径配置) - 日志输出全面,便于调试和定位问题 --- ## 📂 支持文件格式 - 视频:`.mp4`, `.avi`, `.mov`, `.webm` - 图片:`.jpg`, `.jpeg`, `.png`, `.gif` --- ## 🔧 启动方式 ### 1. 准备证书(如使用 HTTPS) 将你的 HTTPS 证书放置于以下路径: ``` 项目根目录/ ├── 17848297_www.hnjzv.com_nginx/ │ ├── www.hnjzv.com.pem │ └── www.hnjzv.com.key ``` ### 2. 编译与运行 ```bash go build -o upload-server main.go ./upload-server ``` 默认监听端口为 `5210`: - 启动 HTTPS 访问:[https://localhost:5210](https://localhost:5210) - 如需启用 HTTP,请修改代码中的: ```go const enableHTTPS = false ``` --- ## 📡 接口说明 ### 1. 文件上传 `POST /upload` - 参数名:`file` - 返回: ```json { "status": "success", "code": 200, "message": "File successfully uploaded to uploads/2025/03/28/150405.mp4" } ``` --- ### 2. 分片上传 `POST /upload/chunk` - 参数: - `file`: 当前分片 - `uploadId`: 文件上传唯一标识 - `chunkIndex`: 当前分片编号 - 返回: ```json { "status": "ok", "chunk": "3" } ``` --- ### 3. 合并分片 `POST /upload/merge` - 参数: - `uploadId`: 与分片一致的上传 ID - `fileName`: 原始文件名(用于提取扩展名) - 返回: ```json { "status": "merged", "path": "uploads/2025/03/28/150405.mp4" } ``` --- ## 📝 日志功能 - 控制台日志启用 `log` 包统一输出。 - 日志格式包含时间、行号、文件名。 - 可扩展输出日志到文件(可选)。 --- ## 📁 上传目录结构 上传文件将按日期存储: ``` uploads/ ├── 2025/ │ └── 03/ │ └── 28/ │ ├── 150405.mp4 ├── chunks/ │ └── / │ ├── chunk_0 │ ├── chunk_1 │ └── ... ``` --- ## 🛠️ 常见问题 ### ❓ 启动 HTTPS 报错 请确保以下两个文件存在,并格式正确: - `*.pem`:服务器证书 - `*.key`:私钥 可以通过 `openssl` 自签生成测试证书。 --- ## 📄 License MIT License. 自由使用与修改,欢迎提交 PR 或提建议。 ``` ---