文档目录

API 简介

IPFS媒体库系统提供了简单易用的 RESTful API 接口,允许开发者将文件存储功能集成到自己的应用、博客或工具中。

主要特性:

  • 支持多种文件格式 (图片、视频等)
  • 基于 IPFS 的去中心化存储
  • 支持 Token 认证
  • 返回 JSON 格式数据

鉴权认证

为了防止滥用,所有 API 请求都需要进行身份验证。

您可以在 用户中心 -> API 密钥 中获取您的 API Token。

认证方式:

支持以下两种方式传递 Token:

1. URL 参数 / POST 参数

token=your_api_token

2. HTTP Header

Authorization: Bearer your_api_token

或者

Authorization: your_api_token

文件上传

接口地址 https://ipfs.nycnm.cn/api/upload.php
请求方法 POST
Content-Type multipart/form-data

请求参数

参数名 类型 必填 说明
file File 要上传的文件 (图片或视频)
token String API Token (也可以使用 Header 传递)

响应示例

  • 成功响应
  • 失败响应
{
    "ok": true,
    "url": "https://ipfs.nycnm.cn/ipfs/QmX...", // 完整文件链接
    "filename": "image.jpg",
    "size": 102400
}
{
    "ok": false,
    "message": "认证失败:请提供有效的 API Token"
}

调用示例

  • cURL
  • Python
  • JavaScript
  • PHP
curl -X POST https://ipfs.nycnm.cn/api/upload.php \
     -F "file=@/path/to/image.jpg" \
     -F "token=your_api_token"
import requests

url = "https://ipfs.nycnm.cn/api/upload.php"
files = {'file': open('image.jpg', 'rb')}
data = {'token': 'your_api_token'}

response = requests.post(url, files=files, data=data)
print(response.json())
const formData = new FormData();
formData.append('file', fileInput.files[0]);
formData.append('token', 'your_api_token');

fetch('https://ipfs.nycnm.cn/api/upload.php', {
    method: 'POST',
    body: formData
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
$url = 'https://ipfs.nycnm.cn/api/upload.php';
$file = '/path/to/image.jpg';
$token = 'your_api_token';

$ch = curl_init();
$data = [
    'file' => new CURLFile($file),
    'token' => $token
];

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));

工具集成与插件

  • PicGo
  • WordPress
  • Typecho
  • 浏览器脚本

PicGo 是一款优秀的图片上传工具,您可以使用 Web-Uploader 插件或 Custom-Uploader 插件来对接本系统。

配置参数:

API地址https://ipfs.nycnm.cn/api/upload.php
POST参数名file
自定义Body
{"token": "your_api_token"}
JSON路径data.url

将以下代码添加到主题的 functions.php 文件中:

// WordPress IPFS Upload Function
function upload_image_to_ipfs($file_path) {
    $api_url = 'https://ipfs.nycnm.cn/api/upload.php';
    $token = 'your_api_token';

    $response = wp_remote_post($api_url, [
        'body' => [
            'token' => $token,
            'file' => new CURLFile($file_path)
        ]
    ]);

    if (is_wp_error($response)) return false;

    $body = wp_remote_retrieve_body($response);
    $data = json_decode($body, true);

    if ($data && $data['ok']) {
        return $data['url'];
    }
    return false;
}

Typecho 插件上传逻辑示例:

// Typecho Upload Handle
public static function uploadHandle($file) {
    $api_url = 'https://ipfs.nycnm.cn/api/upload.php';
    $token = 'your_api_token';
    
    $ch = curl_init();
    $data = [
        'file' => new CURLFile($file['tmp_name'], $file['type'], $file['name']),
        'token' => $token
    ];
    
    curl_setopt($ch, CURLOPT_URL, $api_url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    $response = curl_exec($ch);
    $result = json_decode($response, true);
    
    if ($result && $result['ok']) {
        return array(
            'name' => $file['name'],
            'path' => $file['name'],
            'size' => $file['size'],
            'type' => $file['type'],
            'mime' => $file['type'],
            'url' => $result['url']
        );
    }
    return false;
}

Tampermonkey (油猴) 脚本示例:

// ==UserScript==
// @name         IPFS Uploader
// @match        *://*/*
// @grant        GM_xmlhttpRequest
// ==/UserScript==

(function() {
    'use strict';
    const API_URL = 'https://ipfs.nycnm.cn/api/upload.php';
    const TOKEN = 'your_api_token';

    // 示例:添加一个悬浮球或监听快捷键上传
    console.log("IPFS Uploader ready");
})();