媒体接口
媒体库管理相关的 API 接口文档。
上传文件
接口信息
POST /api/media/upload
Authorization: Bearer {token}
Content-Type: multipart/form-data
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | file | 是 | 文件对象 |
| category | string | 否 | 分类(image/video/audio/document) |
| description | string | 否 | 文件描述 |
响应示例
{
"code": 200,
"message": "上传成功",
"data": {
"id": 1,
"name": "example.jpg",
"path": "/uploads/2024/01/15/abc123.jpg",
"url": "https://example.com/uploads/2024/01/15/abc123.jpg",
"size": 102400,
"mime_type": "image/jpeg",
"width": 1920,
"height": 1080,
"category": "image",
"create_time": "2024-01-15 10:00:00"
}
}
获取媒体列表
接口信息
GET /api/media
Authorization: Bearer {token}
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| page | integer | 否 | 页码,默认1 |
| page_size | integer | 否 | 每页数量,默认20 |
| category | string | 否 | 分类筛选 |
| keyword | string | 否 | 关键词搜索 |
| start_date | string | 否 | 开始日期 |
| end_date | string | 否 | 结束日期 |
响应示例
{
"code": 200,
"data": {
"list": [
{
"id": 1,
"name": "example.jpg",
"path": "/uploads/2024/01/15/abc123.jpg",
"url": "https://example.com/uploads/2024/01/15/abc123.jpg",
"size": 102400,
"mime_type": "image/jpeg",
"category": "image",
"create_time": "2024-01-15 10:00:00"
}
],
"total": 100,
"page": 1,
"page_size": 20
}
}
获取媒体详情
接口信息
GET /api/media/{id}
Authorization: Bearer {token}
响应示例
{
"code": 200,
"data": {
"id": 1,
"name": "example.jpg",
"original_name": "photo.jpg",
"path": "/uploads/2024/01/15/abc123.jpg",
"url": "https://example.com/uploads/2024/01/15/abc123.jpg",
"size": 102400,
"mime_type": "image/jpeg",
"width": 1920,
"height": 1080,
"category": "image",
"description": "示例图片",
"user_id": 1,
"create_time": "2024-01-15 10:00:00"
}
}
更新媒体信息
接口信息
PUT /api/media/{id}
Authorization: Bearer {token}
Content-Type: application/json
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 否 | 文件名 |
| description | string | 否 | 描述 |
| category | string | 否 | 分类 |
响应示例
{
"code": 200,
"message": "更新成功"
}
删除媒体
接口信息
DELETE /api/media/{id}
Authorization: Bearer {token}
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| delete_file | boolean | 否 | 是否删除物理文件,默认true |
响应示例
{
"code": 200,
"message": "删除成功"
}
批量操作
批量删除
DELETE /api/media/batch
Authorization: Bearer {token}
Content-Type: application/json
请求示例
{
"ids": [1, 2, 3],
"delete_file": true
}
批量移动
PUT /api/media/batch/move
Authorization: Bearer {token}
Content-Type: application/json
请求示例
{
"ids": [1, 2, 3],
"category": "image"
}
图片处理
生成缩略图
POST /api/media/{id}/thumbnail
Authorization: Bearer {token}
Content-Type: application/json
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| width | integer | 是 | 宽度 |
| height | integer | 是 | 高度 |
| mode | string | 否 | 模式(crop/fit) |
响应示例
{
"code": 200,
"data": {
"url": "https://example.com/uploads/2024/01/15/abc123_thumb.jpg"
}
}
代码示例
JavaScript
import axios from 'axios'
// 上传文件
const uploadFile = async (file) => {
const formData = new FormData()
formData.append('file', file)
formData.append('category', 'image')
const res = await axios.post('/api/media/upload', formData, {
headers: {
'Content-Type': 'multipart/form-data',
'Authorization': `Bearer ${localStorage.getItem('token')}`
}
})
return res.data
}
// 获取媒体列表
const getMediaList = async (params) => {
const res = await axios.get('/api/media', {
params,
headers: {
Authorization: `Bearer ${localStorage.getItem('token')}`
}
})
return res.data
}
PHP
<?php
$token = 'YOUR_JWT_TOKEN';
// 上传文件
$url = 'http://your-domain.com/api/media/upload';
$file = new CURLFile('/path/to/file.jpg');
$data = [
'file' => $file,
'category' => 'image'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $token,
]);
$response = curl_exec($ch);
curl_close($ch);
错误处理
常见错误
400 文件格式不支持
{
"code": 400,
"message": "不支持的文件格式"
}
413 文件过大
{
"code": 413,
"message": "文件大小超过限制"
}
500 上传失败
{
"code": 500,
"message": "文件上传失败"
}
