API 文档

YourImageShare API 让你可以通过程序上传、列出和删除文件。 这是一个小巧的 JSON/REST API,无需 SDK,只要有 HTTP 客户端和 API 密钥即可使用; 我们也提供官方的 JavaScript、Python 和 MCP 库。

所有客户端库和下面的工具都是开源的。你可以在我们的官方 GitHub 仓库 github.com/yourimageshare/yourimageshare 浏览代码、反馈问题或参与贡献。

基础 URL: https://yourimageshare.com/api · 格式: 请求和响应均为 JSON,上传除外,上传使用 multipart/form-data · 验证: 每个请求都需要 API 密钥。 · 机器可读规范: /openapi.json (OpenAPI 3.1),适合不想解析本页的智能体和代码生成工具。

获取 API 密钥

登录后进入我的账户, 打开 API 标签页。你的密钥会显示在那里,旁边还有一个 重新生成 按钮。重新生成后旧密钥会立即失效, 所以请先更新所有正在使用它的地方,再点击。

该标签页里还有第二个独立的 仅上传密钥, 何时使用它请看下面的提示和论坛插件。

身份验证

推荐把密钥放在请求头中发送,因为查询字符串容易出现在访问日志、代理日志和 Referer 头里:

X-API-Key: YOUR_API_KEY

也可以使用 ?key= 查询参数,保留它是为了兼容旧的集成和临时的 curl 命令。如果两者同时存在,以请求头为准。

?key=YOUR_API_KEY

提示: 请像对待密码一样保管密钥, 任何拿到它的人都可以在你的账户上传、列出、修改和删除文件。每个成功的请求都会被记录, 并在账户页面的 API 标签页中以图表显示,按天和请求类型细分。如果密钥必须放在 其他人能看到的地方(例如论坛插件、公开的配置文件),请改用同一标签页里的 仅上传密钥:它只能上传,列出、查询、修改和删除上传内容时都会返回 401。

接口

上传、列出和删除共用相同的身份验证和速率限制; 大文件可以先分片发送。

POST /api - 上传文件

为已验证的账户上传单个文件。

字段类型是否必填说明
uploadsfile三选一要上传的文件,最大 100MB(经过我们网络的单个请求上限)。每个请求只能上传一个文件,此接口不支持批量上传多个文件。
urlstring图片或视频的公开 http(s) 链接。由我们自己下载,所以最大 200MB 的文件都可以。
upload_idstring事先通过 POST /api/chunk 分片发送的文件,最大 200MB。
filenamestring否与 upload_id 搭配使用:原始文件名。
expires_ininteger否经过这么多秒后自动删除此上传(60 到 31,536,000,即 1 分钟到 1 年)。不填则为普通的永久上传。
allow_duplicateboolean否即使你的账户已上传过完全相同的文件,也保存一份新的副本(见下面的 duplicate)。
keep_originalboolean否保持图片与上传时完全一致。不使用时,超过 1 MB 的 JPG/PNG 文件会被优化为 WebP。无论如何,GPS 等元数据都会被移除。
visibilitystring否unlisted(默认):任何拿到链接的人都能访问文件及其页面,但不会在任何地方列出。private:仅文件,页面链接会把除你之外的所有人直接带到文件(没有评论、回应或广告)。public:在网站上列出,可被搜索引擎收录。
titlestring否最多 90 个字符,显示在上传的页面上。
descriptionstring否最多 500 个字符。

支持的类型: JPG, PNG, GIF, WEBP, AVIF, BMP, TIFF, HEIC 或 HEIF 图片;MP4, WEBM, AVI, MOV, MKV, MPEG, WMV, FLV 或 3GP 视频 (具体列表可能会随时间扩展)。HEIC/HEIF 和 TIFF 会以 WebP 保存, MP4/WebM 以外的视频会转换为 MP4,较大的 JPEG/PNG 图片在上传后不久,若转换后明显更小,也会转换为 WebP。最大 大小: 200MB;超出大小或无法读取的文件会被拒绝,并返回 422。

响应 - 200 OK:

{
  "type": "success",
  "msg": "success",
  "data": {
    "id": "aB3xY9qRz1",
    "type": "image",
    "path": "https://i.yourimageshare.com/aB3xY9qRz1.png",
    "src": "https://yourimageshare.com/ib/aB3xY9qRz1.png",
    "direct": "https://yourimageshare.com/ib/aB3xY9qRz1",
    "thumb": "https://i.yourimageshare.com/thumb-aB3xY9qRz1.webp",
    "width": 1920,
    "height": 1080,
    "size": 482113,
    "locked": false,
    "visibility": "unlisted",
    "title": null,
    "description": null,
    "expires_at": null,
    "duplicate": false,
    "delete_url": "https://yourimageshare.com/delete#iV3x...k9"
  }
}
字段说明
id文件的唯一标识符。
typeimage 或 video。
path文件上传时的存储 URL。文件转换(WebP/MP4)后它可能很快发生变化,所以请保存 src,不要保存 path。
src永久的文件直链,始终打开当前文件,适合用作 <img>/<video> 的 src 以及保存。
direct文件在 YourImageShare 上的页面(标题、描述、评论、分享选项)。
thumb宽 280px 的 WebP 缩略图(视频则为首帧),或 null。
width, height显示尺寸,单位为像素(正向;视频为画面尺寸),未知时为 null。
size存储后的文件大小,单位为字节。
locked如果上传设置了密码保护,则为 true。
visibilityprivate、unlisted 或 public(见上面的请求字段)。
title, description即所设置的内容,或 null。文本与网站一样会经过审核。
delete_url仅新上传才有:无需 API 密钥即可删除此上传的私密链接。只显示一次(只保存哈希值),如有需要请自行保存。
expires_at此上传将被自动删除的 ISO 8601 时间戳,如果不会过期则为 null。
duplicate如果你的账户已上传过完全相同的文件则为 true:返回原来的上传,不会保存新文件。对会过期的上传或使用 allow_duplicate=1 时不适用。

会过期的上传: expires_at 一到,文件就会从存储中删除,上传页面大约 5 分钟内开始返回 410 Gone。这无法撤销,也不能事后延长。如果需要提前移除,可以用 DELETE 接口提前删除;如果需要保留更久, 请用新的 expires_in 重新上传。

POST /api/chunk - 大文件

单个请求最多只能携带 100MB。对于更大的文件(最大 200MB),或者在网速慢时想让每个请求小一些, 可以把文件分成每片最大 5MB 发送,最后用 POST /api 完成:

  1. 选一个上传 id:32 个随机十六进制字符。
  2. 对每个分片,用 POST /api/chunk (multipart/form-data) 发送 upload_id、index(从 0 开始)、total(分片总数) 以及放在 chunk 里的字节数据。响应为 {"type": "success", "chunk_size": 5242880}。
  3. 用 upload_id 和 filename 代替 uploads, 并带上其他上传字段,调用 POST /api。响应与普通上传的响应相同。

未完成上传的分片会在 2 小时后删除。只有最后完成上传的 POST /api 才计入上传速率限制。

GET /api/{id} 和 PATCH /api/{id} - 单个上传

GET 返回你的一个上传,字段与下面的列表相同。 PATCH 修改它的 visibility、title 或 description(表单字段或 JSON;标题或描述为空则清除), 并返回更新后的上传。两者都需要完整的 API 密钥;如果你的账户下没有这个上传,则返回 404。

curl -X PATCH https://yourimageshare.com/api/aB3xY9qRz1 \
  -H "X-API-Key: YOUR_API_KEY" -d visibility=public -d title="Sunset"

POST /api/{id}/replace - 替换文件

替换你某个上传背后的文件,同时保留它的 id、页面和所有链接。任何允许的类型都可以,甚至可以换成不同的类型(图片可以变成视频)。把新文件作为 uploads 发送(或使用通过 POST /api/chunk 分片发送的文件的 upload_id);keep_original 的用法与上传时相同。新文件会经过与新上传相同的检查和转换,旧版本会被移除。需要完整的 API 密钥; 如果你的账户下没有这个上传,则返回 404;如果它设置了密码保护或限制了查看次数,则返回 409。

curl -X POST https://yourimageshare.com/api/aB3xY9qRz1/replace \
  -H "X-API-Key: YOUR_API_KEY" -F uploads=@new-version.png

GET /api - 列出你的上传

返回已验证账户的上传分页列表(无论来源:API、网站或编辑器),按时间从新到旧,每页 50 个。

参数位置是否必填说明
pagequery否页码,默认为 1。

响应 - 200 OK:

{
  "type": "success",
  "data": [
    {
      "id": "aB3xY9qRz1",
      "type": "image",
      "title": null,
      "path": "https://i.yourimageshare.com/aB3xY9qRz1.webp",
      "src": "https://yourimageshare.com/ib/aB3xY9qRz1.webp",
      "direct": "https://yourimageshare.com/ib/aB3xY9qRz1",
      "thumb": "https://i.yourimageshare.com/thumb-aB3xY9qRz1.webp",
      "width": 1920,
      "height": 1080,
      "size": 482113,
      "locked": false,
      "visibility": "unlisted",
      "description": null,
      "expires_at": null,
      "created_at": "2026-07-23T15:43:28+01:00"
    }
  ],
  "meta": { "current_page": 1, "last_page": 1, "total": 1 }
}

这里各字段的含义与上面的上传响应相同 (对于设置了密码保护的上传,path 和 thumb 是短期有效的签名链接)。如需通过 id 查询单个上传,请使用 GET /api/{id}。

DELETE /api/{id} - 删除上传

永久删除已验证账户的某个上传。通过 API 无法撤销。{id} 是上传或列出接口 返回的 id 值。

响应 - 200 OK:

{ "type": "success", "msg": "Deleted." }

如果你的账户下没有该 id 的上传(它从来不是你的,或已被删除),则返回 404。

POST /api/compare - 前后对比滑块

为你自己的两张图片上传生成前后对比:在 /c/{id} 生成一个带滑块的页面,也可以嵌入任何网站。仅上传密钥同样可用。 发送 before 和 after(上传 id,必填),以及可选的 title、 label_before 和 label_after(默认为“Before”和“After”)。

响应 - 201 Created:

{
  "type": "success",
  "id": "P7uAYy04VA",
  "url": "https://yourimageshare.com/c/P7uAYy04VA",
  "embed_url": "https://yourimageshare.com/embed/c/P7uAYy04VA",
  "embed": { "script": "<blockquote class=\"YISEmbed\" ...", "iframe": "<iframe ..." }
}

如果任一 id 不是你的图片上传,则返回 422(视频和设置了密码保护的图片 不能使用)。

速率限制

每个 API 密钥都有各自独立的每分钟和每日配额, 另外还有一个较宽松的每个 IP 每日上限,用来防止同一个 IP 轮流使用多个密钥。 上传、列出和删除共用相同的限制。

时间窗口默认限制范围
每分钟20 个请求每个 API 密钥
每天500 个请求每个完整 API 密钥
每天2,000 个请求每个仅上传密钥(用于转移整个媒体库的插件)
每天2,000 个请求每个 IP 地址
每分钟300 个分片每个 API 密钥,仅限 POST /api/chunk

这些限制可能会调整。每个响应都包含标准的速率限制响应头:

X-RateLimit-Limit: 20
X-RateLimit-Remaining: 14

超出限制时会返回 429,并带有 Retry-After 响应头,告诉你需要等待多少秒。

错误

无论是哪个接口、什么原因,所有错误响应的结构都相同:

{ "type": "error", "errors": "A human-readable description of what went wrong." }
状态码含义
401缺少 API 密钥或密钥无效。
403该账户或你当前的 IP 已被禁止上传。
404此账户下没有找到该 id 对应的上传(获取、修改、删除)。
413请求超过 100MB。请改为分片发送文件(POST /api/chunk),或在 url 中提供文件链接(最大 200MB)。
422验证失败:未提供文件或链接、文件类型不受支持、图片数据无法读取、尺寸超过 30000x30000px 的限制、文件超过 200MB、upload_id 未完成或已过期,或者 url 无法下载(消息中会说明原因)。
429超出速率限制,见上面的速率限制。
500服务器端发生意外故障。可以放心重试。

客户端库

官方 SDK 封装了上面的接口,返回带类型的结果, 并在 API 出错时抛出异常,不用自己处理原始 HTTP。

JavaScript / TypeScript

零依赖,可用于 Node.js 和浏览器。也发布在 JSR, 包名为 @yourimageshare/yourimageshare - npx jsr add @yourimageshare/yourimageshare - 源码相同,直接以 TypeScript 发布。

npm install yourimageshare

Python

只有一个依赖 (requests),Python 3.8+。

pip install yourimageshare

PHP

零 Composer 依赖(使用 PHP 自带的 curl 扩展),PHP 7.4+。 源码在 GitHub。

composer require yourimageshare/yourimageshare-php

Go

零依赖(仅使用标准库),Go 1.18+。完整的参考文档见 pkg.go.dev。

go get github.com/yourimageshare/yourimageshare/go

Rust

两个依赖(用于阻塞式 HTTP 的 ureq,不会引入异步运行时, 以及 serde),Rust 1.70+。源码在 GitHub。

cargo add yourimageshare

Ruby

零 gem 依赖(标准库 Net::HTTP + json),Ruby 2.7+。 源码在 GitHub。

gem install yourimageshare

.NET

只有一个依赖(微软自己的 System.Text.Json),目标为 netstandard2.0, 因此 .NET Framework 和新版 .NET 都能使用。源码在 GitHub。 已针对当前线上 API 构建并验证;即将发布到 NuGet。

dotnet add package YourImageShare

Dart / Flutter

只有一个依赖(http,Dart 团队自己的包),Dart 2.17+。源码在 GitHub。 已针对当前线上 API 构建并验证;即将发布到 pub.dev。

dart pub add yourimageshare

Elixir

只有一个依赖 (Req),Elixir 1.14+。返回 {:ok, result}| {:error, reason} 形式的元组,与其他所有 SDK 中 此 API 的错误处理方式直接对应,另外还提供会抛出异常的 bang 版本。源码在 GitHub, 文档在 HexDocs。

{:yourimageshare, "~> 1.1"}

MCP 服务器

适用于 AI 编程智能体(Claude Code、Cursor 以及其他兼容 MCP 的 工具):把截图以真实链接的形式放进 bug 报告、PR 描述或支持对话, 而不是 base64 数据块或手动上传步骤。在 Claude Desktop 和任何其他 MCP 客户端中用法相同。

托管版,无需安装: 把它作为远程 MCP 服务器添加(在 Claude 中:设置 › 连接器 › 添加自定义连接器;ChatGPT、Cursor、VS Code 和其他支持服务器 URL 的客户端也可以),并在 URL 中带上你的 API 密钥:

https://yourimageshare.com/mcp?key=YOUR_API_KEY

可以设置请求头的客户端也可以改用 https://yourimageshare.com/mcp 和 Authorization: Bearer YOUR_API_KEY。 带密钥的 URL 就像密码:请保密,如果泄露,请在我的账户中获取新密钥。 在托管服务器上,upload_image 接受公开链接(最大 200MB)或内联 base64 内容(最大 15MB)。 没有密钥时,https://yourimageshare.com/mcp 仍可像网站一样匿名上传:只能是不公开列出或私密,限制更低, 上传内容可通过它返回的 delete_url 删除。其他工具需要密钥。

本地: 直接用 npx 运行,无需安装步骤(它还能读取你磁盘上的文件):

npx yourimageshare-mcp

工具:upload_image(本地文件、内联内容或链接,最大 200MB,可选可见性、标题和自动删除)、list_uploads、get_upload、update_upload 和 delete_upload。

也收录在官方 MCP Registry(名称为 io.github.yourimageshare/yourimageshare),并上架 Smithery 和 Glama,方便你的 MCP 客户端从这些地方安装。

刚接触 MCP?请查看如何通过 MCP 把 Claude 和 ChatGPT 连接到此 API,里面有完整的设置教程。

这十个都采用 MIT 许可证。没有适合你所用语言的官方库? 下面的代码示例介绍了如何直接调用 API。

代码示例

curl

# Upload a file
curl "https://yourimageshare.com/api" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "uploads=@/path/to/photo.jpg"

# Upload from a link (files up to 200MB; one direct upload request stops at 100MB -
# bigger files go in pieces, see Large Files above)
curl "https://yourimageshare.com/api" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "url=https://example.com/video.mp4"

# Upload a file that auto-deletes after 1 hour
curl "https://yourimageshare.com/api" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "uploads=@/path/to/photo.jpg" \
  -F "expires_in=3600"

# List uploads
curl "https://yourimageshare.com/api" -H "X-API-Key: YOUR_API_KEY"

# Upload a file without a page of its own (file only) and give it a title
curl "https://yourimageshare.com/api" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "uploads=@/path/to/photo.jpg" \
  -F "visibility=private" \
  -F "title=Sunset"

# Look up one upload, then make it public
curl "https://yourimageshare.com/api/aB3xY9qRz1" -H "X-API-Key: YOUR_API_KEY"
curl -X PATCH "https://yourimageshare.com/api/aB3xY9qRz1" \
  -H "X-API-Key: YOUR_API_KEY" -d "visibility=public"

# Delete an upload
curl -X DELETE "https://yourimageshare.com/api/aB3xY9qRz1" -H "X-API-Key: YOUR_API_KEY"

JavaScript (fetch)

const API_KEY = 'YOUR_API_KEY';
const BASE = 'https://yourimageshare.com/api';

async function uploadFile(file) {
  const form = new FormData();
  form.append('uploads', file);

  const res = await fetch(BASE, {
    method: 'POST',
    headers: { 'X-API-Key': API_KEY },
    body: form,
  });
  const json = await res.json();
  if (json.type !== 'success') throw new Error(json.errors);
  return json.data;
}

async function listUploads(page = 1) {
  const res = await fetch(`${BASE}?page=${page}`, {
    headers: { 'X-API-Key': API_KEY },
  });
  return res.json();
}

async function deleteUpload(id) {
  const res = await fetch(`${BASE}/${id}`, {
    method: 'DELETE',
    headers: { 'X-API-Key': API_KEY },
  });
  return res.json();
}

Python (requests)

import requests

API_KEY = "YOUR_API_KEY"
BASE = "https://yourimageshare.com/api"

HEADERS = {"X-API-Key": API_KEY}

# Upload a file
with open("/path/to/photo.jpg", "rb") as f:
    res = requests.post(BASE, headers=HEADERS, files={"uploads": f})
res.raise_for_status()
upload = res.json()["data"]

# List uploads
res = requests.get(BASE, headers=HEADERS, params={"page": 1})
uploads = res.json()

# Delete an upload
res = requests.delete(f"{BASE}/{upload['id']}", headers=HEADERS)

PHP (curl)

<?php

$apiKey = 'YOUR_API_KEY';
$base = 'https://yourimageshare.com/api';

// Upload a file
$curl = curl_init($base);
curl_setopt_array($curl, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ["X-API-Key: $apiKey"],
    CURLOPT_POSTFIELDS => ['uploads' => new CURLFile('/path/to/photo.jpg')],
    CURLOPT_RETURNTRANSFER => true,
]);
$upload = json_decode(curl_exec($curl), true)['data'];
curl_close($curl);

// List uploads
$curl = curl_init("$base?page=1");
curl_setopt($curl, CURLOPT_HTTPHEADER, ["X-API-Key: $apiKey"]);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$uploads = json_decode(curl_exec($curl), true);
curl_close($curl);

Go (net/http)

上面的官方 Go SDK已经帮你封装好了, 这里的原始写法适合不想增加依赖的人。

package main

import (
    "bytes"
    "encoding/json"
    "io"
    "mime/multipart"
    "net/http"
    "os"
)

const apiKey = "YOUR_API_KEY"
const base = "https://yourimageshare.com/api"

func uploadFile(path string) (map[string]any, error) {
    file, err := os.Open(path)
    if err != nil {
        return nil, err
    }
    defer file.Close()

    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)
    part, _ := writer.CreateFormFile("uploads", path)
    io.Copy(part, file)
    writer.Close()

    req, _ := http.NewRequest("POST", base, body)
    req.Header.Set("Content-Type", writer.FormDataContentType())
    req.Header.Set("X-API-Key", apiKey)

    res, err := http.DefaultClient.Do(req)
    if err != nil {
        return nil, err
    }
    defer res.Body.Close()

    var result map[string]any
    json.NewDecoder(res.Body).Decode(&result)
    return result, nil
}

截图工具

一个浏览器扩展,加上现成的配置和脚本, 可以把截图直接发送到 YourImageShare,无需手动上传。 它们都通过上面介绍的同一个 /api 接口上传。

浏览器扩展 (Chrome 和 Firefox)

适用于 Chrome 和 Firefox 的 YourImageShare Capture 扩展完全不需要 脚本和配置文件。它可以截取可见区域、 拖选的区域或整个滚动页面,打开内置编辑器添加 箭头、文字、模糊/遮盖等标注,然后下载结果、 复制到剪贴板,或一键直接发布到 YourImageShare。 发布使用上面介绍的同一个 /api 接口, 只需在扩展的设置中填写一次 API 密钥,之后每次 发布都会立即返回可分享的链接。支持电脑版 Chrome(及其他 Chromium 浏览器)、电脑版 Firefox 和 Android 版 Firefox。

获取适用于 Firefox 的 YourImageShare Capture 获取适用于 Chrome 的 YourImageShare Capture

ShareX

下载下面的自定义上传器,然后在 ShareX 中依次进入 目标 > 自定义上传器设置 > 导入 > 从文件, 打开下载的 .sxcu,并把 Headers 字段中的 YOUR_API_KEY 替换为你真实的密钥。把它设为图片/文件的目标,截图就会自动上传。

下载 YourImageShare.sxcu

删除: ShareX 中每个上传的“Delete”链接 会在浏览器中打开我们的删除页面(即该上传的一次性 delete_url),因此你可以直接在 ShareX 的 历史记录中删除截图。你也可以在我的账户中删除上传内容。 2026 年 10 月之前下载过配置?请重新下载以获得此功能。

Flameshot (Linux)

一个小型 shell 脚本,运行 flameshot gui,上传 截图,并把链接复制到剪贴板。请在你的桌面环境中把它绑定到 键盘快捷键,用来替代 Flameshot 的默认快捷键。

下载 yis-flameshot-upload.sh

# One-time setup
chmod +x yis-flameshot-upload.sh
export YIS_API_KEY="YOUR_API_KEY"   # or add to ~/.config/yourimageshare/api_key

# Then bind this to a hotkey instead of calling flameshot directly:
/path/to/yis-flameshot-upload.sh

Greenshot (Windows)

适用于 Greenshot 内置外部命令 目标的 PowerShell 脚本。兼容 Windows 自带的 Windows PowerShell 5.1,无需额外安装。

下载 yis-greenshot-upload.ps1

# One-time setup
setx YIS_API_KEY "YOUR_API_KEY"

# In Greenshot: Preferences > Destinations > External command > Settings
#   Command:   powershell.exe
#   Arguments: -ExecutionPolicy Bypass -File "C:\path\to\yis-greenshot-upload.ps1" "%1"

论坛插件

在论坛的发帖编辑器旁添加真正的“上传图片”按钮。 每个插件都通过上面介绍的同一个 /api 接口上传, 并在光标处插入 BBCode,不用另开标签页, 也不用手动复制粘贴。

下面请使用你的仅上传密钥,而不是 API 密钥。 每个插件都会把密钥放在每位访客的页面源码中, 而仅上传密钥(我的账户 > API 标签页)只能上传, 即使有人从页面里复制走,也无法列出或删除你的上传内容。

论坛上传默认是私密的:图片在帖子里可以正常显示, 但 YourImageShare 不会为它生成单独的页面(没有评论、回应或广告)。每个 插件都有一个设置,可切换为 unlisted,这样任何拿到链接的人 也能看到它的页面。

phpBB

真正的 phpBB 3.2/3.3 扩展。解压到 ext/,在 自定义 > 管理扩展中启用,然后把扩展模板事件文件里的 YOUR_UPLOAD_ONLY_KEY 替换为 你真实的仅上传密钥。

下载 phpBB 版

SMF (Simple Machines Forum)

真正的 SMF 软件包:通过管理 > 软件包管理器安装, 然后把 Sources/yis_forumupload.php 里的 YOUR_UPLOAD_ONLY_KEY 替换为你真实的仅上传密钥。

下载 SMF 版

MyBB

真正的 MyBB 1.8 插件。复制到 inc/plugins/,在 配置 > 插件中激活,然后把插件文件里的 YOUR_UPLOAD_ONLY_KEY 替换为你真实的仅上传 密钥。

下载 MyBB 版

FluxBB、PunBB 和 ZetaBoards

它们没有正式的插件系统,所以这是一小段代码,直接粘贴到 你的模板(FluxBB/PunBB)或管理后台(ZetaBoards)中。各自的完整 复制粘贴说明如下:

FluxBB 说明 PunBB 说明 ZetaBoards 说明

WordPress 插件

把媒体库转移到 YourImageShare,而不是 存放在本地磁盘上。新的图片/视频上传会自动通过上面介绍的同一个 /api 接口发送,上传确认后本地文件(以及每个生成的 缩略图尺寸)会被删除,WordPress 的每个 附件 URL(区块编辑器、特色图片、图库、REST API)都会指向 托管在 YourImageShare 的文件。无需短代码,也不用改变工作流程。

  • 可在后台批量转移现有媒体库(也可用 wp yis offload --all),而不只是新上传的文件
  • 已放在文章中的图片和视频在本地文件被删除后依然可以正常显示
  • 缩略图和 srcset 使用我们的 280px 缩略图,因此小尺寸的图片位不会加载原尺寸文件
  • 最大 200MB 的文件,分片发送,大视频也不会给共享主机带来压力
  • 可随时把任何已转移的文件恢复到本地存储
  • 媒体库中的一列会显示哪些已转移、哪些仍在本地
  • 已转移的文件以私密方式保存:在你的网站使用它们的地方都能正常加载,但在 YourImageShare 上没有自己的页面

使用的是你的仅上传密钥,而不是 API 密钥。 只有当你希望在 WordPress 中删除文件时同时从 YourImageShare 删除已转移的文件, 才需要填写可选的完整 API 密钥。

在 WordPress.org 获取 下载 ZIP

在 WordPress 中:插件 > 安装插件,搜索 YourImageShare Media Offload,然后安装并启用。

适用于任意网站的上传按钮

在任何网站上为访客提供“上传”按钮,比如评论表单、客服 页面、我们没有插件的论坛,或者静态网站。只需粘贴两行代码,无需账号,也不需要服务器端代码。

<a class="yis-upload" href="https://yourimageshare.com/" data-target="#message" data-format="bbcode">Image and video hosting by YourImageShare</a>
<script src="https://yourimageshare.com/w.js" async></script>

两个属性都是可选的:不填时按钮会显示链接和一个复制按钮。上传框围绕链接构建。

  • 上传直接在你的页面上进行:点击按钮、把文件拖到按钮上,或把截图粘贴进去, 可同时上传多个文件,并显示进度条和缩略图
  • 直接粘贴或拖入 data-target 所指字段(任何 textarea、input 或 可编辑框)的图片也会上传,链接会添加到该字段;没有目标时,链接会显示在按钮下方,并带有复制按钮
  • data-format:url(文件直链,默认)、page、bbcode、 html 或 markdown;data-label 可更改按钮文字
  • data-key(可选):你的仅上传密钥(我的账户 > API)。这样上传会进入 你的账户,并适用你自己的限制。没有密钥时,上传是匿名且不公开列出的,并有每位访客和每个网站的每日限制
  • 开发者可以在上传框上监听 yis:upload 事件: event.detail.item 包含 {id, type, page, url, thumb}
  • 通过按钮最大可上传 95 MB 的文件(更大的请在网站上上传)。我们的审核和条款照常适用; 每位访客都会得到自己的删除链接

按钮绘制在它自己的隔离框中,因此你网站的 CSS 不会破坏它。 上传框内会一直显示小小的“Image and video hosting by YourImageShare”链接。

iPhone 和 iPad 快捷指令

在任何 App 的分享菜单中上传:照片、文件、Safari、截图,然后链接就会在 剪贴板里。无需安装 App,也无需注册账号。

想在“快捷指令”App 中自己创建(大约两分钟):

  1. 新建快捷指令,命名为“Upload to YourImageShare”。在它的详细信息中,打开在共享表单中显示,并接受图片和媒体。
  2. 添加获取 URL 内容:URL 为 https://yourimageshare.com/api/widget,方法为 POST, 请求正文为表单,包含两个字段:uploads(文件)= 快捷指令输入,以及 client(文本)= ios-shortcut。
  3. 添加获取词典值,取 data,再添加一个取 src,它就是直链。
  4. 添加拷贝到剪贴板和显示通知(“Link copied”)。

没有密钥时,上传是匿名且不公开列出的,并有每日限制。添加请求头 X-API-Key 并填入你的仅上传密钥(我的账户 > API),即可上传到你的账户。响应中也有 delete_url,如果你想保留删除链接的话。

PicGo 和 PicList

PicGo 和 PicList 可为 Markdown 编辑器(Typora、VS Code、Obsidian、 Joplin)上传粘贴或拖入的图片,并把链接放进你的文本。我们的插件让 YourImageShare 成为它们的图床之一。

  • 在 PicGo 或 PicList 中:插件,搜索 yourimageshare,安装,然后选择 YourImageShare 作为上传器。命令行:picgo install yourimageshare
  • 或者下载插件,作为本地插件导入(请先解压)
  • 设置:仅上传密钥(可选,留空即为匿名、不公开列出的上传)、可见性,以及返回 图片直链(用于 Markdown)还是页面链接
  • 之后大图被优化为 WebP 时,它返回的链接依然有效

下载 PicGo 插件

Telegram 机器人

不用离开 Telegram,就能获得照片、视频或 GIF 的链接。把它发给 @YourImageShare_bot,链接会直接返回,无需账号,也无需 API 密钥。 机器人通过上面介绍的同一个 /api 接口上传。

  • 发送照片、视频、GIF,或图片、视频文件;最多 10 个的相册会在一条回复中返回
  • 在群组中,对照片或视频回复 /link,机器人会把它的链接发给所有人
  • /autodelete 可让你接下来的上传在 1 小时、1 天、1 周或 30 天后自动删除
  • 每个结果都带有删除按钮,只对上传该文件的人有效
  • 链接不公开列出:只有拿到链接的人才能看到文件
  • 当网站支持你的 Telegram 语言时,机器人会用该语言回复

保持完整画质: 以普通方式发送的照片会被 Telegram 压缩。 请以文件方式发送(📎 → 文件),这样上传的就是原图。Telegram 允许机器人获取最大 20 MB 的文件,更大的文件请在网站上上传。

在 Telegram 中打开 @YourImageShare_bot

Discord 机器人

把 Discord 中的任何图片、GIF 或视频变成永久链接。Discord 自己的附件链接过一段时间就会失效,而 YourImageShare 的链接不会。无需账号,也无需 API 密钥。机器人通过上面介绍的同一个 /api 接口上传。

  • 带文件使用 /upload:可选在 1、7 或 30 天后自动删除,还有 only_me,让链接只对你自己显示
  • 右键点击消息 → 应用 → Rehost on YourImageShare,可在一条回复中转存其中最多 6 张图片或视频
  • 可以把它添加到服务器,或添加到你自己的账号,在任何聊天或私信中使用
  • 每个结果都带有删除按钮,只对上传该文件的人有效
  • 链接不公开列出:只有拿到链接的人才能看到文件

把 YourImageShare 添加到 Discord

适用于 Playwright 和 Cypress 的 GitHub Action

当 pull request 中的端到端测试失败时,不用下载 artifact 压缩包就能看到原因。这个 action 会上传失败截图和视觉差异,并在一条 pull request 评论中以图片形式显示,每次 运行都会更新。

  • 支持 Playwright 和 Cypress,并能自动判断项目使用的是哪一个
  • 失败的视觉比对会显示为 Expected、Actual 和 Diff,并附有前后对比滑块的链接 (Playwright 的 toHaveScreenshot;Cypress 则支持 cypress-image-diff-js 和 cypress-visual-regression 插件)
  • 测试修复后,评论会变为“all tests passed”;同样的报告也会写入作业摘要
  • 截图是私密的(仅图片文件,没有页面),默认 30 天后删除
  • 需要把你的仅上传密钥设为仓库 secret YOURIMAGESHARE_API_KEY;它不会导致你的构建失败
- uses: yourimageshare/playwright-pr-screenshots@v1
  if: always()
  with:
    api-key: ${{ secrets.YOURIMAGESHARE_API_KEY }}

GitHub 上的设置指南

社区项目

一些最好的 YourImageShare 集成出自使用它的人之手。这些 项目由社区成员使用上面介绍的公开 API 制作。它们由 作者自行维护,如有问题或 bug 报告,请通过项目页面联系作者。

  • YourImageShare Uploads for FlatBB:由 madromas (MadWay Inc.) 为 FlatBB 论坛制作的插件。
    • 在 FlatBB 的发帖编辑器中添加上传按钮:选择一张或多张图片或视频, Markdown 会插入到光标处
    • 每个上传可以作为可点击的缩略图、原尺寸图片或普通链接插入(视频为链接)
    • 上传经过你论坛的服务器,使用仅上传 API 密钥,因此密钥不会到达访客的浏览器
    • 文件托管在 YourImageShare,而不是你论坛的磁盘上,并有你选择的默认可见性(私密、不公开列出或公开)
    • 与 FlatBB 自带的上传器并行使用,文件大小限制各自独立

    GitHub 上的源码 · FlatBB 市场页面

感谢

衷心感谢每一位使用 YourImageShare 进行开发并与他人分享成果的人。 社区项目把 YourImageShare 带到了我们自己永远无法触及的地方。用 API 做了什么东西?告诉我们,我们很乐意把它添加到这里。

来自博客

准备好试试了吗?

获取你的 API 密钥 →