# file-server **Repository Path**: jack_of_disco/file-server ## Basic Information - **Project Name**: file-server - **Description**: 一个高效、可靠的文件服务系统,支持多种文件操作和管理功能,适用于各类开发和生产环境。 使用Go语言搭建一个高效的文件上传下载服务器,占用内存低,直接编译成二进制文件,部署到Linux上无须下载额外的Go语言编译器 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-19 - **Last Updated**: 2025-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # file-server #### 介绍 一个高效、可靠的文件服务系统,支持多种文件操作和管理功能,适用于各类开发和生产环境。 使用 Go 语言搭建一个高效的文件上传下载服务器,占用内存低,直接编译成二进制文件,部署到 Linux 上无须下载额外的 Go 语言编译器 --- ## 1. 上传文件接口 ### 基本信息 - **URL**: `/upload` - **方法**: `POST` - **描述**: 上传文件到服务器(大小限制 500MB) ### 请求参数 | 参数位置 | 参数名 | 类型 | 必填 | 说明 | | ---------------- | ------ | ---- | ---- | ------------------------------------------- | | Body (form-data) | `file` | file | 是 | 要上传的文件,使用 multipart/form-data 格式 | ### 响应格式 **成功 (200 OK)** ```json { "message": "File uploaded successfully.", "filePath": "example.txt" } ``` **失败 (4xx/5xx)** ```json { "error": "错误描述信息" } ``` ### 异常情况 | HTTP 状态码 | 错误信息 | 原因 | | ----------- | ---------------------------------------- | ---------------------------- | | 500 | `Service is not available.` | 服务不可以使用(不可以通讯) | | 413 | `The file size exceeds the 500MB limit.` | 文件大小超过 500MB 限制 | | 500 | `File save failed` | 保存失败 | | 400 | `File acquisition failed` | 上传参数错误 | ### 示例请求 ```bash curl -X POST http://your-server/upload \ -F "file=@/path/to/your/file.txt" ``` --- ## 2. 下载文件接口 ### 基本信息 - **URL**: `/download/type/:filename` - **方法**: `GET` - **描述**: 下载指定文件,返回二进制流 ### 请求参数 | 参数位置 | 参数名 | 类型 | 必填 | 说明 | | -------- | ---------- | ------ | ---- | ------------------------------------------------------ | | Path | `filename` | string | 是 | 文件标识符,支持特殊值 `softPackage` 和 `r-` 前缀 | | Query | `df` | string | 条件 | 当 filename 以 `r-` 开头时**必须提供**,指定实际文件名 | ### 响应格式 **成功 (200 OK)** - 响应体:文件二进制流 - 响应头: - `Content-Disposition: attachment; filename="实际文件名"` - `Content-Type: application/octet-stream` **失败 (4xx)** ```json { "error": "错误描述信息" } ``` ### 异常情况 | HTTP 状态码 | 错误信息 | 原因 | | ----------- | --------------------------- | ---------------------------- | | 500 | `Service is not available.` | 服务不可以使用(不可以通讯) | | 404 | `File does not exist` | 文件不存在 | ### 示例请求 **普通文件下载** ```bash curl -X GET http://your-server/download/type/document.pdf ``` **softPackage 特殊类型** ```bash curl -X GET http://your-server/download/type/softPackage ``` **带参数的 r- 类型文件** ```bash curl -X GET "http://your-server/download/type/r-12345?df=config.json" ``` --- ## 3. 错误码速查表 | 错误信息 | 含义 | 解决方案 | | ---------------------------------------- | -------------------- | -------------------------- | | `Service is not available.` | 服务器内部服务未就绪 | 联系管理员检查服务状态 | | `The file size exceeds the 500MB limit.` | 文件过大 | 不上传大文件或者分开上传 | | `File acquisition failed` | 上传参数错误 | 确保使用 `file` 字段名上传 | | `File save failed` | 保存失败 | 检查磁盘空间和权限 | | `File does not exist` | 文件不存在 | 确认文件名或联系管理员 | --- ## 注意事项 1. **文件大小限制**: 最大 500MB 2. **特殊文件类型**: - `softPackage` 会跳过部分服务检查 - `r-` 前缀需要额外的 `df` 参数 3. **编码**: 所有响应均为 UTF-8 编码