# MyObj
**Repository Path**: dromara/my-obj
## Basic Information
- **Project Name**: MyObj
- **Description**: MyObj 是一个基于 Go 语言开发的开源家庭网盘系统,旨在为个人、家庭和企业用户提供一个安全、高效、易用的私有云存储服务。系统支持大文件上传、断点续传、秒传、文件分享、权限管理等丰富功能,可作为企业级对象存储服务的轻量化替代方案。
- **Primary Language**: Go
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 65
- **Forks**: 10
- **Created**: 2025-12-12
- **Last Updated**: 2026-01-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Go语言, Vue, TypeScript
## README
# 🌟 MyObj
### 现代化的私有云存储解决方案
[](https://golang.org)
[](https://vuejs.org)
[](LICENSE)
[功能特性](#-功能特性) • [快速开始](#-快速开始) • [CLI 工具](#-cli-工具使用) • [API 文档](#api-文档) • [贡献指南](#-贡献指南) • [许可证](#-开源协议)
仓库地址:[gitee](https://gitee.com/dromara/my-obj) [github](https://github.com/dromara/MyObj)
镜像:[docker](https://hub.docker.com/r/myobj/myobj)
---
## 📖 项目简介
**MyObj** 是一个基于 **Go + Vue3** 开发的现代化开源私有云存储系统,为个人和家庭用户提供安全、高效、易用的文件管理服务。系统采用前后端分离架构,支持大文件上传、断点续传、秒传、文件分享、权限管理、WebDAV 协议等丰富功能,可作为企业级对象存储服务的轻量化替代方案。
### ✨ 为什么选择 MyObj?
- 🔒 **数据安全** - 文件加密存储,完全掌控自己的数据
- ⚡ **高性能** - 基于 Gin 框架和 BLAKE3 哈希算法,性能卓越
- 🎯 **功能丰富** - 支持秒传、分片上传、离线下载、种子下载等高级特性
- 🌐 **跨平台** - 支持 Web、Android,提供 WebDAV 协议对接第三方客户端
- 🤖 **AI 赋能** - 内置 MCP 服务,支持大模型智能文件管理(开发中)
- 🚀 **易于部署** - 支持 SQLite/MySQL,单文件部署,开箱即用
---
## 🎯 功能特性
### 📤 文件上传与下载
🚀 智能上传
- 大文件分片上传(支持 GB 级别文件)
- 断点续传(网络中断自动恢复)
- 秒传功能(基于 BLAKE3 哈希去重)
- 多文件批量上传
- 文件加密存储
|
📥 灵活下载
- 多文件批量打包下载
- 离线下载(HTTP/HTTPS 资源)
- 种子下载(磁力链/Torrent 文件)
- 分享链接下载
|
### 👥 用户与权限管理
- ✅ **用户存储配额** - 为每个用户设置独立的存储空间限制
- ✅ **细粒度权限控制** - 支持文件级别的访问权限设置
- ✅ **用户组管理** - 基于用户组的权限策略控制
- ✅ **API Key 认证** - 支持程序化访问和第三方集成
- ✅ **JWT 安全认证** - 基于 Token 的现代化认证机制
### 🗂️ 文件管理
- 📁 **虚拟目录结构** - 灵活的文件组织方式,不暴露服务端真实目录,多用户互不干扰
- 🏷️ **文件操作** - 重命名、移动、复制、删除(回收站机制)
- 🔍 **搜索功能** - 快速搜索文件和文件夹
- 🔗 **限时分享链接** - 生成带有效期的文件分享链接,支持密码保护
- 👁️ **文件预览** - 支持图片、视频在线预览
- 🖼️ **自动缩略图** - 为图片和视频自动生成预览缩略图
- 🌐 **公开文件广场** - 用户可以将文件设为公开,供其他用户浏览
### 🔐 安全与隐私
- 🔒 **文件加密存储** - 可选择性加密敏感文件,保护隐私数据
- 🛡️ **JWT 认证** - 安全的 Token 认证机制
- 🔑 **API Key 管理** - 支持创建和管理多个 API Key
- 🗑️ **回收站机制** - 删除的文件可恢复,防止误操作
- 📊 **操作日志** - 完整的文件操作审计日志
### 🌐 WebDAV 支持
- ✅ **标准 WebDAV 协议** - 兼容主流 WebDAV 客户端
- ✅ **文件浏览与下载** - 通过 WebDAV 访问所有文件
- ✅ **目录管理** - 创建、删除、重命名文件夹
- ✅ **权限控制** - 基于用户权限的访问控制
- ✅ **多用户隔离** - 每个用户只能访问自己的文件空间
> 💡 **详细使用指南**: [WebDAV 配置文档](docs/WEBDAV_USAGE.md)
### 🤖 AI 智能能力(开发中)
通过内置的 **MCP (Model Context Protocol)** 服务,MyObj 支持与大语言模型深度集成:
- 🧠 **智能文件归档** - AI 自动识别文件类型并智能分类
- 🔍 **AI 检索** - 大模型语义搜索网盘文件
- 💾 **内容保存** - AI 生成的内容可直接保存到网盘
- 📄 **智能摘要** - 大模型可阅读文件并生成内容摘要
### 📱 多端支持
- 🌐 **Web 端** - 现代化的响应式网页界面(Vue3 + Element Plus)
- 📱 **Android 端** - 原生安卓应用(开发中)
- 💻 **WebDAV 客户端** - 支持所有兼容 WebDAV 的第三方应用
---
## 🛠️ 技术栈
### 后端技术
| 框架 |
Gin 1.11+ (高性能 HTTP Web 框架) |
| ORM |
GORM 1.31+ (强大的 Go ORM 库) |
| 数据库 |
MySQL 5.7+ / SQLite 3 (双数据库支持) |
| 认证 |
JWT (JSON Web Token) + API Key |
| 缓存 |
Redis / 本地缓存 (可选) |
| 哈希算法 |
BLAKE3 (高性能哈希,支持秒传) |
| 协议 |
WebDAV (RFC 4918) |
| BT 下载 |
anacrolix/torrent (完整的 BitTorrent 客户端) |
| 文档 |
Swagger 2.0 (自动生成 API 文档) |
### 前端技术
| 框架 |
Vue 3.5+ (Composition API) |
| UI 组件 |
Element Plus 2.11+ (现代化组件库) |
| 构建工具 |
Vite 7.2+ (极速开发体验) |
| 状态管理 |
Pinia 3.0+ (Vue 官方推荐) |
| 路由 |
Vue Router 4.6+ |
| 类型支持 |
TypeScript 5.9+ |
| 哈希计算 |
spark-md5 (文件秒传哈希) |
---
## 📋 系统要求
### 运行环境
- **操作系统**: Windows 7+, macOS, Linux
- **CPU**: 2 核或更高
- **内存**: 2GB RAM 或更高
- **磁盘**: 根据存储需求而定
### 开发环境
- **Go**: 1.25 或更高版本
- **Node.js**: 18.0 或更高版本
- **数据库**: MySQL 5.7+ 或 SQLite 3
---
## 🚀 快速开始
### 方式一:使用预编译版本(推荐)
1. **下载最新版本**
从 [Releases](https://github.com/your-repo/myobj/releases) 页面下载对应平台的二进制文件。
2. **解压并配置**
```bash
# 解压文件
unzip myobj-{version}-{platform}.zip
cd myobj
# 编辑配置文件
vim config.toml # Linux/Mac
notepad config.toml # Windows
```
3. **启动服务**
```bash
# Linux/Mac
./server
# Windows
server.exe
```
4. **访问系统**
打开浏览器访问: `http://localhost:8080`
### 方式二:从源码构建
#### 1. 克隆项目
```bash
git clone https://gitee.com/MR-wind/my-obj.git
cd myobj
```
#### 2. 配置系统
编辑 `config.toml` 文件,配置数据库、服务器等信息:
```toml
[server]
host = "0.0.0.0" # 监听地址(0.0.0.0 允许外部访问)
port = 8080 # 监听端口
ssl = false # 是否启用 SSL
swagger = true # 是否启用 Swagger API 文档
[database]
type = "sqlite" # 数据库类型: mysql 或 sqlite
host = "./libs/my_obj.db" # SQLite 数据库文件路径
# 使用 MySQL 时的配置示例:
# type = "mysql"
# host = "localhost"
# port = 3306
# user = "root"
# password = "your-password"
# db_name = "my_obj"
[auth]
secret = "your-secret-key" # JWT 密钥(请修改为随机字符串)
api_key = true # 是否启用 API Key
jwt_expire = 2 # Token 有效期(小时)
[file]
thumbnail = true # 是否生成缩略图
big_file_threshold = 1 # 大文件分片阈值(GB)
big_chunk_size = 1 # 大文件分片大小(GB)
data_dir = "obj_data" # 文件存储目录
temp_dir = "obj_temp" # 临时文件目录
[webdav]
enable = true # 是否启用 WebDAV 服务
host = "0.0.0.0" # 监听地址
port = 8081 # 监听端口
prefix = "/dav" # 路径前缀
[log]
level = "debug" # 日志级别: debug, info, warn, error
log_path = "./logs/" # 日志路径
max_size = 10 # 日志文件最大大小(MB)
max_age = 7 # 日志保留天数
```
#### 3. 初始化数据库
```bash
# 编译 CLI 工具
go build -buildvcs=false -o myobj-cli ./src/cmd/cli
# 执行数据库迁移(首次运行时会自动创建表)
# 注意:当前 CLI 工具已重构,数据库初始化会在首次启动时自动完成
# 也可以查看 CLI 工具功能:
./myobj-cli --help
./myobj-cli user list # 查看用户列表
# Windows 用户使用:
go build -buildvcs=false -o myobj-cli.exe .\src\cmd\cli
.\myobj-cli.exe --help
```
> 💡 **提示**: CLI 工具现已重构,提供更多管理功能,详见 [CLI 工具使用文档](#-cli-工具使用)。
#### 4. 启动开发服务器
**后端开发:**
```bash
# 安装依赖
go mod download
# 启动后端服务
go run src/cmd/server/main.go
```
**前端开发:**
```bash
# 进入前端目录
cd webview
# 安装依赖
npm install
# 启动开发服务器
npm run dev
```
前端开发服务器默认运行在 `http://localhost:5173`,API 请求会自动代理到后端 `http://localhost:8080`。
#### 5. 构建生产版本
使用 `builds/` 目录下的跨平台编译脚本:
**Windows 平台:**
```cmd
cd builds
windows-build-windows.bat # 编译 Windows 版本
windows-build-linux.bat # 编译 Linux 版本
windows-build-mac.bat # 编译 Mac 版本
```
**Linux/Mac 平台:**
```bash
cd builds
chmod +x *.sh # 添加执行权限
./linux-build-linux.sh # Linux: 编译 Linux 版本
./mac-build-mac.sh # Mac: 编译 Mac 版本
```
编译完成后,所有文件位于 `bin/` 目录,可直接部署到目标服务器。
> 💡 **详细构建说明**: [编译脚本文档](builds/README.md)
---
## 📚 使用指南
### 🔧 CLI 工具使用
MyObj 提供了强大的命令行工具用于系统管理。CLI 工具使用 [urfave/cli](https://github.com/urfave/cli) 框架构建,界面美观,功能完善。
#### 构建 CLI 工具
```bash
# 编译 CLI 工具
go build -buildvcs=false -o myobj-cli ./src/cmd/cli
# Windows 用户
go build -buildvcs=false -o myobj-cli.exe .\src\cmd\cli
```
#### 查看帮助
```bash
# 查看全局帮助
./myobj-cli --help
# 查看版本信息
./myobj-cli --version
# 查看特定命令的帮助
./myobj-cli user --help
./myobj-cli group --help
./myobj-cli system --help
```
#### 用户管理命令
```bash
# 列出所有用户(表格形式展示)
./myobj-cli user list
./myobj-cli user ls # 使用别名
# 查看用户详细信息
./myobj-cli user detail
./myobj-cli user info admin # 示例:查看 admin 用户信息
# 重置用户密码
./myobj-cli user reset-password
./myobj-cli user pwd admin 123456 # 示例:重置 admin 密码
# 修改用户组(交互式选择)
./myobj-cli user change-group
./myobj-cli user chgrp admin # 示例:修改 admin 的用户组
# 封禁用户
./myobj-cli user ban
./myobj-cli user ban test # 示例:封禁 test 用户
# 解封用户
./myobj-cli user unban
./myobj-cli user unban test # 示例:解封 test 用户
# 踢出用户所有登录会话
./myobj-cli user kick
./myobj-cli user kick admin # 示例:踢出 admin 的所有登录
```
#### 用户组管理命令
```bash
# 列出所有用户组(包含用户数统计)
./myobj-cli group list
./myobj-cli group ls # 使用别名
```
#### 系统信息命令
```bash
# 查看系统配置信息
./myobj-cli system info
# 查看系统统计数据(用户数、组数等)
./myobj-cli system stats
```
#### CLI 特色功能
- ✨ **美观的界面** - 使用 [pterm](https://github.com/pterm/pterm) 提供彩色输出和表格展示
- 🎯 **交互式操作** - 使用 [survey](https://github.com/AlecAivazis/survey) 提供友好的选择界面
- 🔒 **安全确认** - 所有危险操作都需要用户确认
- 📖 **完整的帮助** - 每个命令都有详细的帮助信息
- ⌨️ **短别名支持** - 命令都有简短的别名(如 `user list` 可以用 `u ls`)
### API 文档
系统内置 Swagger API 文档,启动服务后访问:
```
http://localhost:8080/swagger/index.html
```
#### API 使用示例
**用户认证:**
```bash
# 用户登录获取 Token
curl -X POST http://localhost:8080/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"password"}'
# 响应示例
{
"code": 200,
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expire": "2024-01-01T12:00:00Z"
}
}
```
**文件上传:**
```bash
# 简单文件上传
curl -X POST http://localhost:8080/api/file/upload \
-H "Authorization: Bearer " \
-F "file=@/path/to/file.pdf" \
-F "virtual_path=/"
# 加密文件上传
curl -X POST http://localhost:8080/api/file/upload \
-H "Authorization: Bearer " \
-F "file=@/path/to/secret.doc" \
-F "virtual_path=/" \
-F "is_enc=true" \
-F "file_password=mypassword"
```
**文件下载:**
```bash
# 下载文件
curl -X GET http://localhost:8080/api/file/download/:file_id \
-H "Authorization: Bearer " \
-o downloaded_file
# 加密文件下载(需要密码)
curl -X GET http://localhost:8080/api/file/download/:file_id?password=mypassword \
-H "Authorization: Bearer " \
-o downloaded_file
```
**创建分享链接:**
```bash
curl -X POST http://localhost:8080/api/share/create \
-H "Authorization: Bearer " \
-H "Content-Type: application/json" \
-d '{
"file_id": "123",
"expire_hours": 24,
"password": "share123"
}'
```
**API Key 访问:**
```bash
# 使用 API Key 访问
curl -X GET http://localhost:8080/api/file/list \
-H "X-API-Key: your-api-key"
```
### WebDAV 使用
详细的 WebDAV 配置和使用指南,请参阅:[WebDAV 使用文档](docs/WEBDAV_USAGE.md)
---
## 📁 项目结构
```
myobj/
├── src/ # 后端源代码
│ ├── cmd/ # 程序入口
│ │ ├── server/ # Web 服务器主程序
│ │ │ └── main.go
│ │ └── cli/ # 命令行工具
│ │ └── main.go
│ ├── config/ # 配置管理
│ │ └── config.go # 配置文件加载与解析
│ ├── core/ # 核心业务逻辑
│ │ ├── domain/ # 领域模型
│ │ │ ├── request/ # 请求 DTO
│ │ │ └── response/ # 响应 DTO
│ │ └── service/ # 业务服务层
│ │ ├── file_service.go # 文件管理服务
│ │ ├── user_service.go # 用户管理服务
│ │ ├── shares_service.go # 分享服务
│ │ └── ...
│ ├── internal/ # 内部实现(不对外暴露)
│ │ ├── api/ # API 层
│ │ │ ├── handlers/ # 请求处理器
│ │ │ ├── middleware/ # 中间件(认证、日志、CORS等)
│ │ │ └── routers/ # 路由配置
│ │ └── repository/ # 数据访问层
│ │ ├── database/ # 数据库实现
│ │ │ ├── mysql.go # MySQL 驱动
│ │ │ └── sqlite.go # SQLite 驱动
│ │ └── impl/ # Repository 实现
│ ├── pkg/ # 公开包(可复用组件)
│ │ ├── models/ # 数据模型(对应数据库表)
│ │ ├── auth/ # 认证模块(JWT、API Key)
│ │ ├── cache/ # 缓存模块(Redis、本地缓存)
│ │ ├── download/ # 下载模块(HTTP、Torrent)
│ │ ├── upload/ # 上传模块(分片、秒传)
│ │ ├── hash/ # 哈希计算(BLAKE3)
│ │ ├── preview/ # 文件预览(图片、视频)
│ │ ├── share/ # 分享功能
│ │ ├── task/ # 任务调度
│ │ ├── util/ # 工具函数
│ │ ├── webdav/ # WebDAV 协议实现
│ │ └── logger/ # 日志系统
│ └── tests/ # 测试代码
│ ├── repository_crud_test.go
│ ├── upload_test.go
│ └── ...
│
├── webview/ # 前端源代码(Vue3)
│ ├── src/
│ │ ├── api/ # API 请求封装
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # 公共组件
│ │ ├── composables/ # 组合式函数
│ │ ├── layout/ # 布局组件
│ │ ├── router/ # 路由配置
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── types/ # TypeScript 类型定义
│ │ ├── utils/ # 工具函数
│ │ ├── views/ # 页面组件
│ │ ├── App.vue # 根组件
│ │ └── main.ts # 入口文件
│ ├── dist/ # 构建产物
│ ├── package.json
│ ├── vite.config.ts
│ └── tsconfig.json
│
├── builds/ # 跨平台编译脚本
│ ├── windows-build-windows.bat
│ ├── linux-build-linux.sh
│ ├── mac-build-mac.sh
│ └── README.md
│
├── docs/ # 文档
│ ├── WEBDAV_USAGE.md # WebDAV 使用文档
│ ├── swagger.json # Swagger API 定义
│ └── swagger.yaml
│
├── templates/ # HTML 模板
│ ├── share_password.html # 分享密码验证页面
│ └── 404.html
│
├── sql/ # SQL 脚本
│ └── clear_test_data.sql
│
├── config.toml # 主配置文件
├── go.mod # Go 模块定义
├── go.sum # 依赖校验
└── README.md # 项目说明文档
```
---
## 🧪 测试
项目包含完善的测试用例,所有测试代码统一存放在 `src/tests/` 目录中。
### 运行测试
```bash
# 运行所有测试
go test ./src/tests/... -v
# 运行指定测试文件
go test ./src/tests/repository_crud_test.go -v
# 运行性能基准测试
go test -bench=. ./src/tests/file_enc_benchmark_test.go
# 查看测试覆盖率
go test -cover ./src/tests/...
# 生成覆盖率报告
go test -coverprofile=coverage.out ./src/tests/...
go tool cover -html=coverage.out
```
### 测试模块
| 测试文件 | 说明 |
| ------------------------------ | ------------------------------- |
| `repository_crud_test.go` | 数据库 Repository CRUD 操作测试 |
| `upload_test.go` | 文件上传功能测试 |
| `instant_upload_test.go` | 秒传功能测试 |
| `blake3_hasher_test.go` | BLAKE3 哈希算法测试 |
| `file_enc_util_test.go` | 文件加密/解密功能测试 |
| `file_enc_benchmark_test.go` | 文件加密性能基准测试 |
| `rsa_util_test.go` | RSA 加密工具测试 |
| `utils_test.go` | 通用工具函数测试 |
---
## 🤝 贡献指南
我们欢迎所有形式的贡献!无论是新功能、Bug 修复、文档改进还是问题反馈。
### 贡献流程
#### 1. Fork 本项目
点击项目页面右上角的 **Fork** 按钮,将项目 Fork 到你的账号下。
#### 2. 克隆你的 Fork
```bash
git clone https://github.com/your-username/myobj.git
cd myobj
```
#### 3. 创建特性分支
```bash
# 新功能分支
git checkout -b feature/your-feature-name
# 或者 Bug 修复分支
git checkout -b fix/your-bugfix-name
```
#### 4. 进行开发
- ✅ 遵循项目的代码规范
- ✅ 添加必要的测试用例
- ✅ 确保所有测试通过
- ✅ 更新相关文档
#### 5. 提交更改
```bash
git add .
git commit -m "feat: 添加某某功能" # 或 "fix: 修复某某问题"
```
#### 6. 推送到你的 Fork
```bash
git push origin feature/your-feature-name
```
#### 7. 创建 Pull Request
在 GitHub 上打开你的 Fork,点击 **"New Pull Request"** 按钮:
1. 选择 base 分支(通常是 `main`)
2. 填写 PR 标题和详细描述
3. 说明改动的内容和原因
4. 提交 Pull Request
### 提交信息规范
我们使用 [约定式提交](https://www.conventionalcommits.org/) (Conventional Commits) 规范:
| 类型 | 说明 | 示例 |
| ---------- | ---------------------------------- | ------------------------------------- |
| `feat` | 新功能 | `feat: 添加文件批量下载功能` |
| `fix` | Bug 修复 | `fix: 修复大文件上传失败的问题` |
| `docs` | 文档更新 | `docs: 更新 API 使用文档` |
| `style` | 代码格式调整(不影响功能) | `style: 格式化代码缩进` |
| `refactor` | 代码重构(不修改功能) | `refactor: 重构文件上传逻辑` |
| `perf` | 性能优化 | `perf: 优化哈希计算性能` |
| `test` | 测试相关 | `test: 添加文件上传单元测试` |
| `chore` | 构建/工具相关 | `chore: 更新依赖版本` |
| `ci` | CI/CD 相关 | `ci: 添加 GitHub Actions 工作流` |
**提交信息示例:**
```bash
feat: 添加文件批量下载功能
- 实现多文件打包下载 API
- 添加打包进度查询接口
- 前端界面支持批量选择下载
```
### 代码规范
#### Go 代码规范
- ✅ 遵循 [Go Code Review Comments](https://github.com/golang/go/wiki/CodeReviewComments)
- ✅ 使用 `gofmt` 或 `goimports` 格式化代码
- ✅ 所有公开的函数、类型、常量都必须有注释
- ✅ 注释应以函数/类型名称开头,如:`// GetUserByID retrieves a user by their ID`
- ✅ 内部实现放在 `internal/` 目录,对外接口放在 `pkg/` 目录
- ✅ 所有测试代码统一放在 `src/tests/` 目录
- ✅ 错误处理要完善,避免 panic
- ✅ 使用有意义的变量名,避免单字母变量(除循环变量)
#### Vue/TypeScript 代码规范
- ✅ 遵循 [Vue 3 风格指南](https://cn.vuejs.org/style-guide/)
- ✅ 使用 Composition API 而非 Options API
- ✅ 组件名称使用 PascalCase
- ✅ 使用 TypeScript 类型注解,避免 `any`
- ✅ 使用 ESLint 和 Prettier 格式化代码
- ✅ 组件应拆分为合理的粒度,避免过大
### 开发建议
#### 功能开发前
- 🔍 先查看 [Issues](https://github.com/your-repo/myobj/issues),避免重复工作
- 💬 如果是重大更改,建议先开 Issue 讨论设计方案
- 📖 阅读相关代码,理解现有实现
#### 提交 PR 前
- ✅ 确保所有测试通过 (`go test ./src/tests/...`)
- ✅ 确保代码已格式化 (`gofmt -w .`)
- ✅ 更新相关文档(如果有 API 变更)
- ✅ 在 PR 描述中说明改动内容和测试情况
#### 文档同步
- 📝 功能变更时同步更新 README.md
- 📝 新增 API 时更新 Swagger 注释
- 📝 重大特性需要在 `docs/` 目录添加使用文档
### 报告问题
发现 Bug 或有功能建议?请创建 [Issue](https://gitee.com/dromara/my-obj/issues/new) 并提供:
- 📋 **问题的详细描述**
- 🔄 **复现步骤**(如果是 Bug)
- ✅ **期望行为**
- ❌ **实际行为**
- 💻 **系统环境信息**(操作系统、Go 版本、浏览器等)
- 📄 **相关日志或截图**
**Issue 模板示例:**
```markdown
### 问题描述
简要描述遇到的问题
### 复现步骤
1. 打开文件列表页面
2. 点击上传按钮
3. 选择大于 1GB 的文件
4. 观察上传进度
### 期望行为
文件应该能正常上传并显示进度
### 实际行为
上传到 50% 时报错并中断
### 环境信息
- OS: Windows 11
- Go 版本: 1.25
- 浏览器: Chrome 120
- MyObj 版本: v1.0.0
### 相关日志
```
ERROR: upload failed: connection timeout
```
```
### 寻求帮助
如果你在贡献过程中遇到问题:
1. 📖 查看项目文档和示例代码
2. 🔍 搜索已有的 [Issues](https://gitee.com/dromara/my-obj/issues)
3. 💬 在 Issue 中提问
4. 📧 联系项目维护者
---
## 🗺️ 未来规划
我们正在积极开发以下功能,欢迎贡献:
### 即将推出
- [ ] **多网盘接入** - 支持阿里云盘、百度网盘、天翼云盘等第三方存储
- [ ] **文件类型自动分类** - 智能归类文件(文档、图片、视频等)
- [ ] **文本文件在线编辑** - 支持在线预览和编辑文本文件
- [ ] **视频封面自动生成** - 视频文件自动截取封面作为缩略图
- [ ] **格式转换** - 下载时支持指定格式转换(如 HEIC → JPG)
- [ ] **冷数据归档** - 自动归档压缩长期未访问的文件,节省存储空间
### 长期目标
- [ ] **iOS 客户端** - 原生 iOS 应用
- [ ] **桌面客户端** - Electron 跨平台桌面应用
- [ ] **Docker 部署** - 提供官方 Docker 镜像
- [ ] **K8s 支持** - Helm Charts 和部署文档
- [ ] **对象存储扩展** - 支持 S3、MinIO 等对象存储后端
- [ ] **文件版本控制** - 类似 Git 的文件版本管理
- [ ] **协作功能** - 多人实时协作编辑
- [ ] **全文搜索** - 基于 ElasticSearch 的文件内容搜索
### 贡献优先功能
以下功能特别欢迎社区贡献:
- 🌐 **国际化** (i18n) - 多语言支持
- 🎨 **主题系统** - 自定义界面主题
- 📊 **统计面板** - 可视化数据统计
- 🔌 **插件系统** - 可扩展的插件架构
- 📱 **移动端适配优化** - 更好的移动端体验
> 💡 **参与讨论**: 查看 [待开发功能列表](待开发.md) 或在 [Discussions](https://github.com/your-repo/myobj/discussions) 中分享你的想法!
---
## 📄 开源协议
本项目采用 **Apache License 2.0** 开源,详见 [LICENSE](LICENSE) 文件。
### 你可以自由地:
- ✅ **商业使用** - 可用于商业项目
- ✅ **修改代码** - 可以修改源代码
- ✅ **分发软件** - 可以分发原始或修改后的代码
- ✅ **专利授权** - 提供明确的专利授权
- ✅ **私人使用** - 可以私人使用和修改
### 你需要遵守:
- 📄 **保留版权声明** - 保留原作者的版权声明
- 📄 **声明修改** - 需要在修改的文件中说明修改内容
- 📄 **包含许可证** - 分发时需要包含 Apache 2.0 许可证副本
- 📄 **保留 NOTICE 文件** - 如果项目包含 NOTICE 文件,需要一并保留
### Apache 2.0 的优势:
- 🛡️ **专利保护** - 明确授予专利使用权,避免专利诉讼
- 📜 **商业友好** - 适合企业使用,无需担心法律风险
- 🌍 **国际认可** - 被 Apache 基金会等主流开源组织广泛采用
---
## 🙏 致谢
感谢以下开源项目和技术社区的支持:
- [Gin](https://github.com/gin-gonic/gin) - 高性能 Go Web 框架
- [GORM](https://gorm.io/) - 优秀的 Go ORM 库
- [Vue.js](https://vuejs.org/) - 渐进式 JavaScript 框架
- [Element Plus](https://element-plus.org/) - 基于 Vue 3 的组件库
- [BLAKE3](https://github.com/zeebo/blake3) - 高性能哈希算法
- [anacrolix/torrent](https://github.com/anacrolix/torrent) - Go BitTorrent 库
特别感谢所有为本项目做出贡献的开发者!
---
## 📮 联系方式
- 🏠 **项目主页**: [https://gitee.com/dromara/my-ob](https://gitee.com/dromara/my-ob)
- 🐛 **问题反馈**: [Gitee Issues](https://gitee.com/dromara/my-ob/issues)
- 💬 **讨论区**: [Gitee Discussions](https://gitee.com/dromara/my-ob/discussions)
- 🌐 **官方网站**: [https://gitee.com/dromara/my-ob](https://gitee.com/dromara/my-ob)
---
---
### ⭐ Star History
[](https://star-history.com/#https://gitee.com/MR-wind/myobj&Date)
---
**如果这个项目对你有帮助,请给我们一个 ⭐ Star!**
Made with ❤️ by MyObj Team
[⬆ 回到顶部](#-myobj)