📷 图床系统 API 文档

Base64图片上传与管理系统

📋 基本信息

默认 API 密钥: tuchuang_2024_secret_key_9527

图片过期时间: 1小时

最大图片大小: 10MB

⚠️ 注意: 所有API请求都需要在请求头中包含 X-API-Key 字段,或在URL参数中传递 api_key 参数。

🔌 API 端点

POST /api/upload.php

功能:上传base64编码的图片

请求参数

参数名 类型 必填 说明
image string base64编码的图片数据(可包含或不包含data URI前缀)

请求示例

curl -X POST http://localhost/api/upload.php \
  -H "Content-Type: application/json" \
  -H "X-API-Key: tuchuang_2024_secret_key_9527" \
  -d '{
    "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="
  }'

响应示例

{
  "success": true,
  "data": {
    "image_id": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6_1729785600",
    "image_url": "http://localhost/image/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6_1729785600",
    "mime_type": "image/png",
    "file_size": 95,
    "expires_at": "2024-10-24 15:30:00",
    "expires_in": "1 hours"
  }
}
GET /image/{image_id}

功能:访问上传的图片(无需API密钥)

URL参数

参数名 类型 必填 说明
image_id string 上传图片时返回的image_id

请求示例

curl http://localhost/image/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6_1729785600

响应:直接返回图片二进制数据,Content-Type为对应的图片MIME类型

GET /api/stats.php

功能:获取系统统计信息

请求示例

curl http://localhost/api/stats.php?api_key=tuchuang_2024_secret_key_9527

响应示例

{
  "success": true,
  "data": {
    "total_images": 42,
    "total_size": 5242880,
    "today_uploads": 15
  }
}

❌ 错误码说明

HTTP状态码 说明
200 请求成功
201 创建成功
400 请求参数错误
401 未授权(API密钥无效)
404 资源不存在或已过期
405 请求方法不允许
500 服务器内部错误

💻 使用示例

JavaScript (Fetch API)

// 上传图片
async function uploadImage(base64Image) {
  const response = await fetch('http://localhost/api/upload.php', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': 'tuchuang_2024_secret_key_9527'
    },
    body: JSON.stringify({ image: base64Image })
  });
  
  const result = await response.json();
  if (result.success) {
    console.log('图片URL:', result.data.image_url);
    return result.data.image_url;
  } else {
    console.error('上传失败:', result.error);
  }
}

Python (requests)

import requests
import base64

# 上传图片
def upload_image(image_path):
    with open(image_path, 'rb') as f:
        image_data = base64.b64encode(f.read()).decode('utf-8')
    
    response = requests.post(
        'http://localhost/api/upload.php',
        headers={
            'X-API-Key': 'tuchuang_2024_secret_key_9527'
        },
        json={'image': f'data:image/jpeg;base64,{image_data}'}
    )
    
    result = response.json()
    if result['success']:
        print('图片URL:', result['data']['image_url'])
        return result['data']['image_url']
    else:
        print('上传失败:', result['error'])

🚀 部署说明

✅ 本地测试:

  1. 导入数据库文件 database.sql
  2. 配置 Nginx(参考 nginx.conf)
  3. 确保 PHP 扩展:pdo_mysql, gd
  4. 访问 http://localhost

🌐 生产部署(宝塔服务器):

  1. 修改 config.php 中的 SITE_URLhttp://103.36.220.50
  2. 在宝塔面板导入数据库
  3. 配置网站伪静态规则
  4. 设置定时任务清理过期图片