# free-file **Repository Path**: nachao/free-file ## Basic Information - **Project Name**: free-file - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-06 - **Last Updated**: 2026-02-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 资源管理工具 一个极简的文件管理解决方案,使用 Go 语言开发,支持大文件上传(最大 10GB),多种上传方式,文件夹管理,文件预览等功能。 ## ✨ 核心特性 ### 📤 多种上传方式 - **点击上传**:支持多选文件上传 - **拖拽文件**:拖拽文件到页面任意位置即可上传 - **拖拽文件夹**:支持拖拽整个文件夹,自动保留目录结构 - **粘贴上传**:Ctrl+V 粘贴剪贴板中的文件 ### 📁 文件管理 - **多命名空间**:通过 URL 路径 `/:scope` 访问不同的资源空间 - **文件夹结构**:完整保留上传时的文件夹结构 - **文件预览**:支持图片和文本文件在新标签页预览 - **文件下载**:一键下载任意文件 - **文件删除**:安全删除不需要的文件 ### 🎨 界面体验 - **极简设计**:黑白配色,无边框,紧凑布局 - **双视图模式**:卡片视图和列表视图(表格),自动缓存设置 - **一行头部**:标题、搜索、筛选、视图切换全部在一行 - **实时搜索**:输入即搜,快速定位文件 - **分类筛选**:按文件类型筛选(图片、视频、音频、文档、压缩包、代码等) - **列表排序**:支持按类型、文件名、大小、创建时间、修改时间排序 ### 📊 文件信息 - 文件名(含相对路径) - 文件扩展名 - 文件大小(自动转换单位) - 创建时间(相对时间显示) - 修改时间(相对时间显示) - 文件类型图标 ## 🚀 快速开始 ### 1. 安装依赖 ```bash go mod download ``` ### 2. 启动服务 ```bash go run main.go ``` 服务将在 `http://localhost:8080` 启动。 ### 3. 访问使用 访问以下地址之一: - `http://localhost:8080` - 产品介绍页 - `http://localhost:8080/default` - 默认命名空间 - `http://localhost:8080/项目A` - 访问"项目A"的资源 - `http://localhost:8080/文档` - 访问"文档"的资源 - `http://localhost:8080/任意名称` - 创建并访问任意命名空间 ## 📚 使用指南 ### 上传文件 **方式 1:点击上传** 1. 点击"上传文件"按钮 2. 选择一个或多个文件 3. 等待上传完成 **方式 2:拖拽文件** 1. 直接将文件拖拽到页面任意位置 2. 释放鼠标开始上传 **方式 3:拖拽文件夹** 1. 将整个文件夹拖拽到页面 2. 系统自动递归上传所有文件 3. 完整保留目录结构 **方式 4:粘贴上传** 1. 复制文件(Ctrl+C) 2. 在页面按 Ctrl+V 3. 文件自动上传 ### 管理文件 **预览文件** - 点击文件卡片的"预览"按钮 - 图片和文本文件在新标签页打开 **下载文件** - 点击"下载"按钮 - 文件自动下载到本地 **删除文件** - 点击"删除"按钮 - 确认后删除(不可恢复) ### 搜索和筛选 **搜索文件** - 在搜索框输入关键词 - 实时过滤文件列表 **筛选分类** - 选择分类下拉框 - 按类型查看文件 **切换视图** - 点击"卡片"或"列表"按钮 - 设置自动保存 **排序文件**(列表视图) - 点击表格标题 - 切换升序/降序 ## 🔧 API 接口 ### 上传文件 ``` POST /api/upload/:scope Content-Type: multipart/form-data 参数: - file: 文件数据 - path: 相对路径(用于文件夹上传) ``` ### 获取文件列表 ``` GET /api/files/:scope?search=关键词&category=分类 参数: - search: 搜索关键词(可选) - category: 文件分类(可选):all, image, video, audio, document, archive, code, other ``` ### 下载文件 ``` GET /api/download/:scope/:filename ``` ### 删除文件 ``` DELETE /api/files/:scope/:filename ``` ### 获取所有命名空间 ``` GET /api/scopes ``` ## 📁 文件存储 文件存储在 `./storage` 目录下,按命名空间组织: ``` storage/ ├── 项目A/ │ ├── documents/ │ │ └── 报告.pdf │ └── images/ │ └── logo.png ├── 文档/ │ └── report.docx └── default/ └── test.txt ``` ## 🛠️ 技术栈 - **后端**:Go 1.21 + Gin 框架 - **前端**:原生 HTML + CSS + JavaScript - **特性**: - 嵌入式静态文件(单文件部署) - CORS 支持 - 大文件上传支持(10GB) - 响应式设计 - LocalStorage 视图模式缓存 - 文件夹结构保留 - 跨平台路径处理 ## 📝 开发 ```bash # 运行开发服务器 go run main.go # 编译可执行文件 go build -o fn-file.exe # 运行编译后的程序 ./fn-file.exe ``` ## ⚠️ 注意事项 - 文件上传大小限制为 10GB - 文件名会保持原样存储 - 支持中文文件名和路径 - 同一路径下不能有重名文件(会覆盖) - 删除操作不可恢复,请谨慎操作 - 文件夹上传会保留完整目录结构 ## 📄 License MIT