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 - 上传文件
为已验证的账户上传单个文件。
| 字段 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
uploads | file | 三选一 | 要上传的文件,最大 100MB(经过我们网络的单个请求上限)。每个请求只能上传一个文件,此接口不支持批量上传多个文件。 |
url | string | 图片或视频的公开 http(s) 链接。由我们自己下载,所以最大 200MB 的文件都可以。 | |
upload_id | string | 事先通过 POST /api/chunk 分片发送的文件,最大 200MB。 | |
filename | string | 否 | 与 upload_id 搭配使用:原始文件名。 |
expires_in | integer | 否 | 经过这么多秒后自动删除此上传(60 到 31,536,000,即 1 分钟到 1 年)。不填则为普通的永久上传。 |
allow_duplicate | boolean | 否 | 即使你的账户已上传过完全相同的文件,也保存一份新的副本(见下面的 duplicate)。 |
keep_original | boolean | 否 | 保持图片与上传时完全一致。不使用时,超过 1 MB 的 JPG/PNG 文件会被优化为 WebP。无论如何,GPS 等元数据都会被移除。 |
visibility | string | 否 | unlisted(默认):任何拿到链接的人都能访问文件及其页面,但不会在任何地方列出。private:仅文件,页面链接会把除你之外的所有人直接带到文件(没有评论、回应或广告)。public:在网站上列出,可被搜索引擎收录。 |
title | string | 否 | 最多 90 个字符,显示在上传的页面上。 |
description | string | 否 | 最多 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 | 文件的唯一标识符。 |
type | image 或 video。 |
path | 文件上传时的存储 URL。文件转换(WebP/MP4)后它可能很快发生变化,所以请保存 src,不要保存 path。 |
src | 永久的文件直链,始终打开当前文件,适合用作 <img>/<video> 的 src 以及保存。 |
direct | 文件在 YourImageShare 上的页面(标题、描述、评论、分享选项)。 |
thumb | 宽 280px 的 WebP 缩略图(视频则为首帧),或 null。 |
width, height | 显示尺寸,单位为像素(正向;视频为画面尺寸),未知时为 null。 |
size | 存储后的文件大小,单位为字节。 |
locked | 如果上传设置了密码保护,则为 true。 |
visibility | private、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 完成:
- 选一个上传 id:32 个随机十六进制字符。
- 对每个分片,用
POST /api/chunk(multipart/form-data) 发送upload_id、index(从 0 开始)、total(分片总数) 以及放在chunk里的字节数据。响应为{"type": "success", "chunk_size": 5242880}。 - 用
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 个。
| 参数 | 位置 | 是否必填 | 说明 |
|---|---|---|---|
page | query | 否 | 页码,默认为 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 替换为你真实的密钥。把它设为图片/文件的目标,截图就会自动上传。
删除: ShareX 中每个上传的“Delete”链接 会在浏览器中打开我们的删除页面(即该上传的一次性 delete_url),因此你可以直接在 ShareX 的 历史记录中删除截图。你也可以在我的账户中删除上传内容。 2026 年 10 月之前下载过配置?请重新下载以获得此功能。
Flameshot (Linux)
一个小型 shell 脚本,运行 flameshot gui,上传 截图,并把链接复制到剪贴板。请在你的桌面环境中把它绑定到 键盘快捷键,用来替代 Flameshot 的默认快捷键。
# 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,无需额外安装。
# 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 替换为 你真实的仅上传密钥。
SMF (Simple Machines Forum)
真正的 SMF 软件包:通过管理 > 软件包管理器安装, 然后把 Sources/yis_forumupload.php 里的 YOUR_UPLOAD_ONLY_KEY 替换为你真实的仅上传密钥。
MyBB
真正的 MyBB 1.8 插件。复制到 inc/plugins/,在 配置 > 插件中激活,然后把插件文件里的 YOUR_UPLOAD_ONLY_KEY 替换为你真实的仅上传 密钥。
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 中:插件 > 安装插件,搜索 YourImageShare Media Offload,然后安装并启用。
iPhone 和 iPad 快捷指令
在任何 App 的分享菜单中上传:照片、文件、Safari、截图,然后链接就会在 剪贴板里。无需安装 App,也无需注册账号。
想在“快捷指令”App 中自己创建(大约两分钟):
- 新建快捷指令,命名为“Upload to YourImageShare”。在它的详细信息中,打开在共享表单中显示,并接受图片和媒体。
- 添加获取 URL 内容:URL 为
https://yourimageshare.com/api/widget,方法为POST, 请求正文为表单,包含两个字段:uploads(文件)= 快捷指令输入,以及client(文本)=ios-shortcut。 - 添加获取词典值,取
data,再添加一个取src,它就是直链。 - 添加拷贝到剪贴板和显示通知(“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 时,它返回的链接依然有效
Telegram 机器人
不用离开 Telegram,就能获得照片、视频或 GIF 的链接。把它发给 @YourImageShare_bot,链接会直接返回,无需账号,也无需 API 密钥。 机器人通过上面介绍的同一个 /api 接口上传。
- 发送照片、视频、GIF,或图片、视频文件;最多 10 个的相册会在一条回复中返回
- 在群组中,对照片或视频回复
/link,机器人会把它的链接发给所有人 /autodelete可让你接下来的上传在 1 小时、1 天、1 周或 30 天后自动删除- 每个结果都带有删除按钮,只对上传该文件的人有效
- 链接不公开列出:只有拿到链接的人才能看到文件
- 当网站支持你的 Telegram 语言时,机器人会用该语言回复
保持完整画质: 以普通方式发送的照片会被 Telegram 压缩。 请以文件方式发送(📎 → 文件),这样上传的就是原图。Telegram 允许机器人获取最大 20 MB 的文件,更大的文件请在网站上上传。
Discord 机器人
把 Discord 中的任何图片、GIF 或视频变成永久链接。Discord 自己的附件链接过一段时间就会失效,而 YourImageShare 的链接不会。无需账号,也无需 API 密钥。机器人通过上面介绍的同一个 /api 接口上传。
- 带文件使用
/upload:可选在 1、7 或 30 天后自动删除,还有 only_me,让链接只对你自己显示 - 右键点击消息 → 应用 → Rehost on YourImageShare,可在一条回复中转存其中最多 6 张图片或视频
- 可以把它添加到服务器,或添加到你自己的账号,在任何聊天或私信中使用
- 每个结果都带有删除按钮,只对上传该文件的人有效
- 链接不公开列出:只有拿到链接的人才能看到文件
适用于 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 }} 社区项目
一些最好的 YourImageShare 集成出自使用它的人之手。这些 项目由社区成员使用上面介绍的公开 API 制作。它们由 作者自行维护,如有问题或 bug 报告,请通过项目页面联系作者。
- YourImageShare Uploads for FlatBB:由 madromas (MadWay Inc.) 为 FlatBB 论坛制作的插件。
- 在 FlatBB 的发帖编辑器中添加上传按钮:选择一张或多张图片或视频, Markdown 会插入到光标处
- 每个上传可以作为可点击的缩略图、原尺寸图片或普通链接插入(视频为链接)
- 上传经过你论坛的服务器,使用仅上传 API 密钥,因此密钥不会到达访客的浏览器
- 文件托管在 YourImageShare,而不是你论坛的磁盘上,并有你选择的默认可见性(私密、不公开列出或公开)
- 与 FlatBB 自带的上传器并行使用,文件大小限制各自独立
感谢
衷心感谢每一位使用 YourImageShare 进行开发并与他人分享成果的人。 社区项目把 YourImageShare 带到了我们自己永远无法触及的地方。用 API 做了什么东西?告诉我们,我们很乐意把它添加到这里。
来自博客
准备好试试了吗?
获取你的 API 密钥 →