97 lines
1.6 KiB
Markdown
97 lines
1.6 KiB
Markdown
|
|
# 文件上传 API
|
|||
|
|
|
|||
|
|
## 基础信息
|
|||
|
|
|
|||
|
|
| 项目 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| 基础URL | `http://localhost:8082` |
|
|||
|
|
| 上传模式 | local / minio(配置决定) |
|
|||
|
|
|
|||
|
|
## 配置说明
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
# config.yaml
|
|||
|
|
upload_mode: "local" # 上传模式:local 或 minio
|
|||
|
|
upload_local_path: "resource/files" # 本地存储路径
|
|||
|
|
server_base_url: "http://localhost:8082" # 服务器基础URL
|
|||
|
|
|
|||
|
|
# MinIO 配置(upload_mode 为 minio 时需要)
|
|||
|
|
minio_endpoint: "localhost:9000"
|
|||
|
|
minio_access_key: "your-access-key"
|
|||
|
|
minio_secret_key: "your-secret-key"
|
|||
|
|
minio_bucket: "x-agents"
|
|||
|
|
minio_use_ssl: false
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 接口列表
|
|||
|
|
|
|||
|
|
### 1. 上传文件
|
|||
|
|
|
|||
|
|
**请求**
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
POST /api/file_upload
|
|||
|
|
Content-Type: multipart/form-data
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| file | File | 是 | 要上传的文件 |
|
|||
|
|
|
|||
|
|
**响应**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"url": "http://localhost:8082/files/abc123.pdf",
|
|||
|
|
"fileKey": "abc123",
|
|||
|
|
"message": "Upload successful"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**错误响应**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": false,
|
|||
|
|
"message": "File too large (max 100MB)"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 2. 删除文件
|
|||
|
|
|
|||
|
|
**请求**
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
DELETE /api/file_upload/:filename
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| filename | String | 是 | 文件名(不含路径) |
|
|||
|
|
|
|||
|
|
**响应**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"message": "File deleted"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3. 访问文件(仅本地模式)
|
|||
|
|
|
|||
|
|
文件上传后,本地模式下可通过以下 URL 直接访问:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
GET /files/{filename}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
例如:`http://localhost:8082/files/abc123.pdf`
|
|||
|
|
|
|||
|
|
> 注意:MinIO 模式返回的是预签名 URL,有效期 24 小时。
|