DKFile API对接文档 v1.0

DKFile 提供简单易用的文件上传API,支持单文件上传和管理功能

概述

DKFile API 基于 REST 架构设计,使用标准的 HTTP 方法和状态码。所有请求和响应均使用 JSON 格式。

基础URL

https://dkfile.com/dkfile_api

认证方式

DKFile API 支持两种认证方式,您可以根据使用场景选择合适的方式:

方式一:API密钥认证(推荐)

推荐场景:后端服务、自动化脚本、第三方集成、CI/CD流程

获取API密钥

  1. 登录DKFile网站
  2. 访问 API密钥管理页面
  3. 点击"创建新密钥"按钮
  4. 输入密钥名称,选择过期时间(可选)
  5. 保存生成的密钥(只显示一次,请妥善保管)

使用方法

在HTTP请求头中添加 Authorization 字段:

# Python示例
import requests

headers = {
    'Authorization': 'Bearer YOUR_API_KEY'
}

# 上传文件
files = {'file': open('dkfile.html', 'rb')}
data = {'project_name': '我的项目'}

response = requests.post(
    'https://dkfile.com/dkfile_api/upload',
    headers=headers,
    files=files,
    data=data
)

print(response.json())
# cURL示例
curl -X POST https://dkfile.com/dkfile_api/upload \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@dkfile.html" \
  -F "project_name=我的项目"

优点

  • ✅ 无需登录,直接使用密钥
  • ✅ 适合自动化脚本和后台服务
  • ✅ 可以随时撤销和重新生成
  • ✅ 支持设置过期时间
  • ✅ 便于权限管理和审计

方式二:Session认证(兼容模式)

适用场景:网站前端JavaScript调用、浏览器环境、快速测试

使用方法

  1. 在浏览器中登录DKFile网站
  2. 登录后浏览器会自动保存Session Cookie
  3. 使用同一会话(浏览器或requests.Session)调用API
# Python示例
import requests

# 创建会话
session = requests.Session()

# 登录
login_url = 'https://dkfile.com/login'
login_data = {'username': 'your_username', 'password': 'your_password'}
session.post(login_url, data=login_data)

# 调用API(自动携带Cookie)
response = session.post(
    'https://dkfile.com/dkfile_api/upload',
    files={'file': open('dkfile.html', 'rb')},
    data={'project_name': '我的项目'}
)

print(response.json())
// JavaScript示例(网站前端)
// 用户已登录,Cookie自动携带
const formData = new FormData();
formData.append('file', fileInput.files[0]);
formData.append('project_name', '我的项目');

fetch('https://dkfile.com/dkfile_api/upload', {
    method: 'POST',
    credentials: 'include',  // 重要:包含Cookie
    body: formData
})
.then(response => response.json())
.then(data => console.log(data));

优点

  • ✅ 前端JavaScript可以直接调用
  • ✅ 无需管理额外的API密钥
  • ✅ 适合浏览器环境快速测试

缺点

  • ❌ Cookie会过期,需要重新登录
  • ❌ 不适合后台自动化脚本
  • ❌ 第三方集成不便
建议:
  • 后端服务、自动化脚本 → 使用 API密钥认证
  • 网站前端JavaScript → 使用 Session认证
  • 快速测试 → 两种方式都可以

API密钥管理

如果您选择使用API密钥认证,需要先获取API密钥。以下是获取和管理API密钥的详细步骤:

GET API密钥管理页面

访问API密钥管理页面,创建、查看和管理您的API密钥

获取API密钥步骤

1
登录账户

确保您已经登录到DKFile账户

2
访问密钥管理页面

点击下方按钮或访问:/api-keys

管理API密钥
3
创建新密钥

点击"创建新密钥"按钮,输入密钥名称和过期时间(可选)

4
保存密钥

重要:密钥只显示一次,请立即复制并妥善保存

密钥管理功能

创建密钥

创建新的API密钥,支持自定义名称和过期时间

查看密钥

查看所有API密钥的列表和状态信息

启用/禁用

随时启用或禁用API密钥,无需删除

删除密钥

永久删除不再需要的API密钥

安全建议

安全提醒:
  • API密钥具有完整的账户权限,请妥善保管
  • 不要在代码中硬编码API密钥,使用环境变量
  • 定期轮换API密钥,提高安全性
  • 不要将API密钥提交到版本控制系统
  • 如果密钥泄露,请立即删除并创建新密钥

使用限制

限制项 限制值 说明
密钥数量 最多10个 每个用户最多可创建10个API密钥
密钥长度 64字符 API密钥为64位随机字符串
过期时间 可选设置 可设置1天到1年的过期时间,或永不过期
权限范围 完整权限 API密钥具有与登录用户相同的权限
立即获取API密钥

点击按钮将在新标签页中打开API密钥管理页面

文件上传

POST /dkfile_api/upload

上传单个文件到DKFile平台

请求参数

参数名 类型 必填 说明
file File 必填 要上传的文件对象
project_name String 选填 项目名称,默认使用文件名
description String 选填 文件描述信息

文件更新逻辑

智能文件管理

DKFile API 支持智能文件管理,当上传同名文件时会自动更新现有文件:

  • 首次上传:创建新的文件记录
  • 重复上传:更新现有文件记录,保持数据连续性
  • 文件访问:使用相同的URL访问,确保链接稳定性
  • 数据保护:保留原有的项目名称、描述等元数据

响应字段说明

字段名 类型 说明
file_name String 原始文件名
project_name String 项目名称
file_size Integer 文件大小(字节)
url String 文件访问地址(格式:/{username}/{filename}
created_at String 创建时间(北京时间,格式:YYYY-MM-DD HH:MM:SS
updated_at String 更新时间(北京时间,仅文件更新时返回)
is_update Boolean 是否为文件更新(true:更新,false:新建)

成功响应示例

200 OK
首次上传响应
{
  "success": true,
  "message": "文件上传成功",
  "data": {
    "file_name": "dkfile.html",
    "project_name": "我的项目",
    "file_size": 2048,
    "url": "https://dkfile.com/username/dkfile.html",
    "created_at": "2025-01-01 20:00:00",
    "updated_at": null,
    "is_update": false
  }
}
文件更新响应
{
  "success": true,
  "message": "文件更新成功",
  "data": {
    "file_name": "dkfile.html",
    "project_name": "我的项目",
    "file_size": 3072,
    "url": "https://dkfile.com/username/dkfile.html",
    "created_at": "2025-01-01 20:00:00",
    "updated_at": "2025-01-01 21:30:00",
    "is_update": true
  }
}

错误响应示例

请求错误 (400)

400 Bad Request
{
  "success": false,
  "message": "没有上传文件",
  "error_code": "NO_FILE"
}

API权限被禁用 (403)

403 Forbidden
{
  "success": false,
  "message": "您的API调用权限已被禁用,请联系管理员",
  "error_code": "API_PERMISSION_DENIED"
}
提示:如果您的API权限被禁用,请联系管理员重新开启权限。管理员可以在用户管理页面控制每个用户的API调用权限。

获取上传配置

GET /dkfile_api/upload/info

获取当前用户的上传配置信息和配额

成功响应

200 OK
{
  "success": true,
  "data": {
    "max_file_size": 16777216,
    "max_file_size_mb": 16.0,
    "max_files_per_user": 100,
    "current_file_count": 25,
    "remaining_quota": 75,
    "allowed_extensions": [".html", ".htm", ".css", ".js", ...],
    "api_version": "1.0"
  }
}

API速率限制

为确保服务稳定性和公平性,DKFile API实施智能速率限制,防止恶意调用系统。

限制规则

限制类型 默认用户 认证用户 VIP用户 说明
每分钟请求 10次 60次 300次 基于API密钥或用户账号
每小时请求 100次 1000次 5000次 滑动窗口计算
每天请求 1000次 10000次 50000次 北京时间0点重置
并发请求 2个 10个 50个 同时进行的请求数

响应头信息

每次API响应会包含以下速率限制信息:

HTTP/1.1 200 OK
X-RateLimit-Limit: 1000          # 小时限制
X-RateLimit-Remaining: 995       # 剩余次数
X-RateLimit-Reset: 1698765432    # 重置时间(Unix时间戳)
X-RateLimit-Window: hour         # 窗口类型(minute/hour/day)

超限响应

当超过速率限制时,会返回 429 Too Many Requests

429 Too Many Requests
{
  "success": false,
  "error_code": 1203,
  "error_type": "QUOTA_ERROR",
  "message": "API请求频率超限(每小时)",
  "solution": "请稍后再试,或升级账户获取更高限额",
  "doc_link": "https://dkfile.com/api#rate-limits",
  "retry_after": 3600,  // 建议重试等待时间(秒)
  "details": {
    "current": 1001,
    "limit": 1000,
    "reset_time": "2025-10-25 15:00:00"
  }
}

最佳实践

避免触发限流的建议:
  • 检查响应头:每次请求后检查 X-RateLimit-Remaining
  • 实现重试机制:超限后等待 retry_after 秒再重试
  • 使用队列:对批量上传使用队列控制速率
  • 缓存结果:避免重复请求相同的数据
  • 错峰上传:避开高峰时段,分散请求

错误码说明

DKFile API使用标准化的错误码体系,便于开发者快速定位和解决问题。

错误响应格式

{
  "success": false,
  "error_code": 1101,              // 数字错误码
  "error_type": "PARAM_ERROR",     // 错误类型
  "message": "缺少file参数",        // 错误消息(中文)
  "solution": "请在请求中包含file参数",  // 解决方案
  "doc_link": "https://dkfile.com/api#upload"  // 文档链接
}

错误码分类

错误码范围 分类 说明
1000-1099 认证错误 API密钥、Session、权限相关错误
1100-1199 参数错误 请求参数缺失、格式错误、验证失败
1200-1299 配额限制 速率限制、存储配额、文件数量限制
1300-1399 文件操作 文件读写、权限、状态相关错误
1400-1499 业务逻辑 业务规则验证、内容检测等错误
1500-1599 服务器错误 服务器内部错误、数据库错误、服务不可用

常用错误码

错误码 错误类型 说明 HTTP状态码
1001 AUTH_ERROR 缺少API密钥 401
1002 AUTH_ERROR API密钥无效 401
1006 AUTH_ERROR 账号已被禁用 403
1007 AUTH_ERROR API调用权限已被禁用 403
1101 PARAM_ERROR 缺少file参数 400
1103 PARAM_ERROR 文件内容为空 400
1104 PARAM_ERROR 文件大小超过限制 400
1105 PARAM_ERROR 文件类型不支持 400
1201 QUOTA_ERROR 文件数量已达上限 400
1203 QUOTA_ERROR API请求频率超限(每小时) 429
1204 QUOTA_ERROR API请求频率超限(每分钟) 429
1501 SERVER_ERROR 服务器内部错误 500
1503 SERVER_ERROR 存储服务不可用 503
完整错误码列表: DKFile API包含200+详细错误码,每个错误都包含错误类型、详细说明和解决方案。 完整列表请参考错误码文档

客户端错误排查指南

以下是使用 curl 或其他 HTTP 客户端时常见的错误及解决方法:

错误信息 错误码 原因与解决方法
curl: (26) Failed to open/read local data from file/application curl 26 原因:curl 无法读取本地文件
检查:
  • 文件路径是否正确(使用绝对路径或相对于当前目录的路径)
  • 文件是否存在:ls -la 文件名
  • 文件是否有读取权限:chmod +r 文件名
curl: (7) Failed to connect to localhost curl 7 原因:无法连接到服务器
检查:
  • 服务器是否运行中
  • 端口号是否正确
  • 防火墙是否阻止连接
Redirecting to login page 302 原因:API Key 认证失败
检查:
  • 请求头中是否包含 Authorization: Bearer {api_key}
  • API Key 是否正确且未过期
  • 是否使用了 -H 参数而非 -h
{"success": false, "error_code": "NO_FILE"} 400 原因:服务器未接收到文件
检查:
  • 是否使用了 -F "file=@文件路径" 格式
  • 参数名是否为 file(小写)
  • 是否使用了 @ 符号
{"success": false, "error_code": "EMPTY_FILE"} 400 原因:上传的文件内容为空
检查:
  • 文件是否真的为空:ls -lh 文件名
  • 是否有文件写入权限
调试技巧:
  • 使用 curl -v 参数查看详细的请求和响应信息
  • 检查服务器返回的 error_code 字段,对照上方的错误码表
  • 先用简单的小文件测试,确认基本功能正常后再上传大文件
  • 确认文件路径时可以先用 pwd 查看当前目录

API版本信息

DKFile API遵循语义化版本控制,确保向后兼容性和平滑升级。

当前版本

v1.0 稳定版本

发布日期:2025-01-01

更新日期:2025-01-15 (v1.0.1)

核心功能

  • ✅ 文件上传功能 (POST /dkfile_api/upload)
  • ✅ 获取上传配置 (GET /dkfile_api/upload/info)
  • ✅ API密钥认证支持
  • ✅ Session认证支持
  • ✅ 智能文件更新机制
  • ✅ 200+详细错误码体系
  • ✅ API速率限制保护
  • ✅ 多语言响应支持(中文/英文)

版本策略

策略项 说明
命名规则 使用语义化版本号(主版本.次版本.修订版本)
支持周期 每个版本至少支持12个月
弃用通知 弃用通知至少提前3个月
下线通知 下线通知至少提前6个月
向后兼容 次版本更新保持向后兼容
重大变更 主版本更新可能包含不兼容变更

更新日志

🔢 扩展错误码系统

  • 从11个基础错误码扩展至200+详细错误码
  • 错误码分类体系:认证、参数、配额、文件、业务、服务器
  • 每个错误包含详细说明和解决方案

⚡ API速率限制

  • 实现分钟、小时、天三级速率限制
  • 支持不同用户等级(默认/认证/VIP)
  • 响应头包含限流信息(X-RateLimit-*)

📝 文档改进

  • 添加速率限制详细说明
  • 完善错误码文档
  • 添加API版本信息章节

🐛 Bug修复

  • 修复文件上传时的编码问题
  • 优化错误响应格式

🎉 DKFile API 正式发布

  • ✅ 实现文件上传功能
  • 🔐 支持API密钥和Session双重认证
  • 📊 提供上传配置查询接口
  • 📁 智能文件更新机制
  • 📖 完整的API文档

未来规划

v1.1(计划2025-Q2)
  • 📋 文件列表查询 (GET /dkfile_api/files)
  • 🗑️ 文件删除功能 (DELETE /dkfile_api/files/{id})
  • ✏️ 文件元数据更新 (PUT /dkfile_api/files/{id})
  • 📊 用户统计信息 (GET /dkfile_api/stats)
  • 🔍 文件搜索功能
  • 📦 批量操作支持

代码示例

根据您的使用场景,选择合适的认证方式查看相应的代码示例:

推荐使用场景:后端服务、自动化脚本、CI/CD流程、第三方集成

Python 示例

import requests

# 设置API密钥
API_KEY = 'YOUR_API_KEY'  # 替换为您的API密钥
BASE_URL = 'https://dkfile.com/dkfile_api'

# 设置请求头
headers = {
    'Authorization': f'Bearer {API_KEY}'
}

# 1. 获取上传配置信息(可选)
info_response = requests.get(f'{BASE_URL}/upload/info', headers=headers)
print('配置信息:', info_response.json())

# 2. 上传文件
files = {'file': open('dkfile.html', 'rb')}
data = {
    'project_name': '我的项目',
    'description': '项目描述'
}

response = requests.post(
    f'{BASE_URL}/upload',
    headers=headers,
    files=files,
    data=data
)

result = response.json()
if result['success']:
    print(f"✅ 上传成功!")
    print(f"文件名: {result['data']['file_name']}")
    print(f"访问地址: {result['data']['url']}")
    print(f"上传时间: {result['data']['created_at']}")
else:
    print(f"❌ 上传失败: {result['message']}")
    print(f"错误码: {result.get('error_code', 'N/A')}")

cURL 示例

# 获取上传配置信息
curl -X GET https://dkfile.com/dkfile_api/upload/info \
  -H "Authorization: Bearer YOUR_API_KEY"

# 首次上传文件
curl -X POST https://dkfile.com/dkfile_api/upload \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@dkfile.html" \
  -F "project_name=我的项目" \
  -F "description=项目描述"

# 更新同名文件(自动检测并更新)
curl -X POST https://dkfile.com/dkfile_api/upload \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@dkfile.html" \
  -F "project_name=我的项目" \
  -F "description=更新后的描述"

Node.js 示例

const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');

// 配置
const API_KEY = 'YOUR_API_KEY';  // 替换为您的API密钥
const BASE_URL = 'https://dkfile.com/dkfile_api';

// 设置请求头
const headers = {
    'Authorization': `Bearer ${API_KEY}`
};

// 创建表单
const form = new FormData();
form.append('file', fs.createReadStream('dkfile.html'));
form.append('project_name', '我的项目');
form.append('description', '项目描述');

// 上传文件
axios.post(`${BASE_URL}/upload`, form, {
    headers: {
        ...headers,
        ...form.getHeaders()
    }
})
.then(response => {
    const result = response.data;
    if (result.success) {
        if (result.data.is_update) {
            console.log('✅ 文件更新成功!');
            console.log('文件名:', result.data.file_name);
            console.log('访问地址:', result.data.url);
            console.log('创建时间:', result.data.created_at);
            console.log('更新时间:', result.data.updated_at);
        } else {
            console.log('✅ 文件上传成功!');
            console.log('文件名:', result.data.file_name);
            console.log('访问地址:', result.data.url);
            console.log('创建时间:', result.data.created_at);
        }
    } else {
        console.error('❌ 操作失败:', result.message);
    }
})
.catch(error => {
    console.error('请求错误:', error.message);
});

JavaScript (Fetch) 示例

// 配置
const API_KEY = 'YOUR_API_KEY';  // 替换为您的API密钥
const BASE_URL = 'https://dkfile.com/dkfile_api';

// 创建表单数据
const formData = new FormData();
formData.append('file', fileInput.files[0]);
formData.append('project_name', '我的项目');
formData.append('description', '项目描述');

// 上传文件
fetch(`${BASE_URL}/upload`, {
    method: 'POST',
    headers: {
        'Authorization': `Bearer ${API_KEY}`
    },
    body: formData
})
.then(response => response.json())
.then(data => {
    if (data.success) {
        console.log('✅ 上传成功!', data.data);
        alert(`上传成功!访问地址:${data.data.url}`);
    } else {
        console.error('❌ 上传失败:', data.message);
        alert(`上传失败:${data.message}`);
    }
})
.catch(error => {
    console.error('请求错误:', error);
    alert('请求失败,请检查网络连接');
});

PHP 示例

<?php
// 配置
$apiKey = 'YOUR_API_KEY';  // 替换为您的API密钥
$baseUrl = 'https://dkfile.com/dkfile_api';

// 准备文件
$filePath = 'dkfile.html';
$cfile = new CURLFile($filePath, mime_content_type($filePath), basename($filePath));

// 准备POST数据
$postData = [
    'file' => $cfile,
    'project_name' => '我的项目',
    'description' => '项目描述'
];

// 初始化cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $baseUrl . '/upload');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $apiKey
]);

// 执行请求
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

// 处理响应
$result = json_decode($response, true);
if ($result['success']) {
    echo "✅ 上传成功!\n";
    echo "文件名: " . $result['data']['file_name'] . "\n";
    echo "访问地址: " . $result['data']['url'] . "\n";
    echo "上传时间: " . $result['data']['created_at'] . "\n";
} else {
    echo "❌ 上传失败: " . $result['message'] . "\n";
}
?>
适用场景:网站前端JavaScript调用、浏览器环境、快速测试

Python 示例

import requests

# 创建会话(保持Cookie)
session = requests.Session()

# 1. 先登录获取Session
login_url = 'https://dkfile.com/login'
login_data = {
    'username': 'your_username',
    'password': 'your_password'
}
login_response = session.post(login_url, data=login_data)

if login_response.status_code == 200:
    print('✅ 登录成功')
    
    # 2. 获取上传配置(可选)
    info_response = session.get('https://dkfile.com/dkfile_api/upload/info')
    print('配置信息:', info_response.json())
    
    # 3. 上传文件(Session自动携带Cookie)
    upload_url = 'https://dkfile.com/dkfile_api/upload'
    files = {'file': open('dkfile.html', 'rb')}
    data = {
        'project_name': '我的项目',
        'description': '项目描述'
    }

response = session.post(upload_url, files=files, data=data)
result = response.json()

if result['success']:
        print(f"✅ 上传成功!")
        print(f"文件名: {result['data']['file_name']}")
        print(f"访问地址: {result['data']['url']}")
        print(f"上传时间: {result['data']['created_at']}")
else:
        print(f"❌ 上传失败: {result['message']}")
else:
    print('❌ 登录失败')

cURL 示例

# 1. 先登录并保存Cookie
curl -X POST https://dkfile.com/login \
  -c cookies.txt \
  -d "username=your_username" \
  -d "password=your_password"

# 2. 使用保存的Cookie上传文件
curl -X POST https://dkfile.com/dkfile_api/upload \
  -b cookies.txt \
  -F "file=@dkfile.html" \
  -F "project_name=我的项目" \
  -F "description=项目描述"

# 3. 获取上传配置
curl -X GET https://dkfile.com/dkfile_api/upload/info \
  -b cookies.txt

JavaScript (Fetch) - 前端示例

// 注意:用户需要先在浏览器中登录网站
// 登录后浏览器会自动保存Cookie

// 上传文件
const formData = new FormData();
formData.append('file', fileInput.files[0]);
formData.append('project_name', '我的项目');
formData.append('description', '项目描述');

fetch('https://dkfile.com/dkfile_api/upload', {
    method: 'POST',
    credentials: 'include',  // 重要:包含Cookie
    body: formData
})
.then(response => response.json())
.then(data => {
    if (data.success) {
        console.log('✅ 上传成功!', data.data);
        alert(`上传成功!访问地址:${data.data.url}`);
    } else {
        console.error('❌ 上传失败:', data.message);
        alert(`上传失败:${data.message}`);
    }
})
.catch(error => {
    console.error('请求错误:', error);
    alert('请求失败,请检查网络连接或登录状态');
});

jQuery 示例

// 用户需要先登录
// 上传文件
$('#uploadForm').on('submit', function(e) {
    e.preventDefault();
    
    var formData = new FormData();
    formData.append('file', $('#fileInput')[0].files[0]);
    formData.append('project_name', '我的项目');
    formData.append('description', '项目描述');
    
    $.ajax({
        url: 'https://dkfile.com/dkfile_api/upload',
        type: 'POST',
        data: formData,
        processData: false,
        contentType: false,
        xhrFields: {
            withCredentials: true  // 包含Cookie
        },
        success: function(data) {
            if (data.success) {
                console.log('✅ 上传成功!', data.data);
                alert('上传成功!访问地址:' + data.data.url);
            } else {
                console.error('❌ 上传失败:', data.message);
                alert('上传失败:' + data.message);
            }
        },
        error: function(xhr, status, error) {
            console.error('请求错误:', error);
            alert('请求失败,请检查网络连接或登录状态');
        }
    });
});
注意事项:
  • Session认证需要先登录,Cookie会在一定时间后过期
  • 跨域请求需要设置 credentials: 'include'withCredentials: true
  • 不适合后台自动化脚本,推荐使用API密钥认证

最佳实践

  • 在上传前调用 /dkfile_api/upload/info 检查配额和文件大小限制
  • 上传失败时,根据 error_code 判断具体错误类型并给出相应提示
  • 大文件上传建议添加进度条提示用户
  • 建议在上传前验证文件类型,避免上传不支持的文件格式
  • 保存返回的 url 字段,用于访问和分享文件
  • 使用 HTTP 状态码(200/400/401/403/500)判断请求是否成功
  • created_at 返回北京时间(UTC+8),无需手动转换时区

常见问题

以下是用户最常问到的问题,帮助您快速了解DKFile API

DKFile API 是一个完全免费的HTML文件托管和上传API接口。

主要功能包括:

  • 🚀 RESTful风格的API接口
  • 📁 文件上传和管理
  • 🔐 API密钥和Session双重认证
  • 📊 完整的API调用日志
  • ⚡ 智能文件更新机制

适合开发者、团队、企业快速集成文件托管功能到自己的系统中。

使用DKFile API上传文件非常简单,只需4个步骤

1
获取API密钥或使用Session认证
2
发送POST请求到 /dkfile_api/upload 端点
3
在请求中包含 file 参数和可选的 project_namedescription 参数
4
获取返回的URL即可访问上传的文件

支持Python、JavaScript、Node.js、PHP等多种编程语言,详见代码示例部分。

DKFile API支持两种认证方式,您可以根据使用场景选择:

API密钥认证(推荐)

适用场景:服务端应用、自动化脚本、CI/CD集成

优势:更安全、支持跨域、适合生产环境

使用方式:在请求头中添加 Authorization: Bearer YOUR_API_KEY

Session认证

适用场景:浏览器环境、已登录用户的Web应用

优势:简单便捷、无需管理密钥、适合快速原型

使用方式:登录后自动携带Session Cookie

详细的认证方式说明和代码示例,请查看认证方式部分。

是的,DKFile 100%完全免费!

🎁 免费内容包括:

  • 功能免费使用 - 所有API功能永久免费开放
  • 文件免费托管 - 上传的文件永久免费存储和发布
  • API免费调用 - 不限制调用次数,随便用
  • 不限制次数 - 每天、每月、每年都没有调用次数限制

💯 零门槛使用:无隐藏费用,无需信用卡,注册即可使用。我们致力于为开发者提供永久免费、稳定、高效的文件托管服务。

DKFile API具有智能文件更新功能

  • 首次上传:创建新的文件记录,返回 is_update: false
  • 🔄 重复上传同名文件:自动更新现有文件,返回 is_update: true
  • 🔗 URL保持不变:文件访问地址始终一致,无需更新引用链接
  • 📦 数据保护:保留原有的项目名称、描述等元数据

这意味着您可以放心地多次上传同一个文件名,系统会智能地进行版本更新而不是创建重复文件。

API密钥安全是非常重要的,请遵循以下最佳实践:

使用环境变量
不要在代码中硬编码API密钥
避免提交到Git
将密钥文件添加到 .gitignore
定期轮换密钥
建议每3-6个月更换一次API密钥
密钥泄露
如果密钥泄露,请立即删除并创建新密钥

需要帮助?

如果您在使用API过程中遇到任何问题,请通过以下方式联系我们: