imgurl,一个免费的图床(中国大陆可直接访问)
阅读原文
建议阅读原文,始终查看最新文档版本,获得最佳阅读体验:《imgurl,一个免费的图床(中国大陆可直接访问)》
引言
最近我在研究如何利用AI自动生成小红书笔记,以及合适的配图,在此过程中,我希望能将文生图生成的图片上传到图床或者某个网络存储平台上,方便后续通过url直接引用相应的图片。我找到了几个很受欢迎的图床。最终选择了ImgURL.org ,因为中国大陆可以直接访问,而且免费额度也挺多的,而且,最重要的是支持restful API。
当然了,还有几个图床也是非常棒的,只是中国大陆访问很不稳定。如imgbb,路过图床 (imgse.com)和Catbox。
介绍
ImgURL.org 是由小z博客团队开发和维护的一款国内图床服务平台,支持 JPG、PNG、GIF、WEBP 等多种图片格式上传,提供包括拖拽上传、相册分类、外链生成、批量管理等功能,同时开放 RESTful API 接口,便于开发者集成至第三方系统或自动化工具中使用;用户可通过注册账户获得专属 uid 和 token,实现图片上传、查看历史记录、相册管理等高级功能,是一款面向开发者和内容创作者的轻量级图像托管与分发解决方案。
功能:
图片上传功能
-
✅ 支持图片格式:JPG、JPEG、PNG、GIF、BMP、WEBP
-
✅ 上传方式:
-
Web 页面上传(支持拖拽)
-
粘贴板粘贴上传
-
RESTful API 上传(支持第三方工具调用)
-
-
✅ 上传后自动生成图片外链(含 HTML、Markdown、BBCode、直链等格式)
-
✅ 自定义压缩与重命名规则(后台设置)
📁 图片管理功能
-
✅ 相册分类管理(可创建多个相册)
-
✅ 图片列表查看(支持分页、搜索)
-
✅ 图片删除、一键复制外链
-
✅ 查看历史上传记录
-
✅ 按上传时间、大小、名称排序
🔐 账号与权限控制
-
✅ 用户注册登录系统(支持令牌 token 管理)
-
✅ 每位用户拥有独立 UID 和上传密钥 Token
-
✅ 后台支持 Token 刷新、失效控制
-
✅ 上传权限控制(防止匿名上传)
🔌 API 接口支持
-
✅ RESTful 上传接口(支持通过
curl、Python、PowerShell 等工具调用) -
✅ 接口参数包括:
uid、token、file、album_id(可选) -
✅ 返回标准 JSON 格式,含上传状态与图片信息
⚙️ 后台管理功能(管理员)
-
✅ 用户管理(可禁用用户、查看上传记录)
-
✅ 图片总览与全局图片搜索
-
✅ 系统配置(如上传大小限制、水印设置、存储路径配置)
-
✅ 多语言支持、主题自定义
☁️ 部署与扩展性(ImgURL Pro / 开源版)
-
✅ 提供开源部署版本(支持私有化部署)
-
✅ 支持 OSS、本地存储等多种存储方案
-
✅ 自带防盗链机制(可设置 Referer 白名单)
官网
https://www.imgurl.org/
免费额度
免费用户每日最多上传10张图片,每个月最多上传300张图片,存储容量为1GB,其实还是够用的,如果不够,可以购买VIP

获取uid和API token
只有注册用户才能在网页端和通过API上传图片。
注册很简单,本文不再赘述。成功注册后,登录,然后在后台管理页面就能查看uid和生成API token了。

有了uid和token,就能通过restful API上传图片了
通过restful API上传图片
官方文档:API | 藏经阁
首先要知道自己账户的uid和token,可以看上一节说明。
以下命令演示如何通过Powershell上传本地图片至imgurl上
# ImgURL API 上传图片脚本
# ===================================================
# 请替换以下参数为你的实际信息
# ===================================================
# ImgURL API 上传接口地址
$ApiUrl = "https://www.imgurl.org/api/v2/upload"
# 你的用户 ID (UID) - 请从 ImgURL 后台 "管理 - API 令牌" 获取
$Uid = "<替换为你的uid>"
# 你的 API 令牌 (Token) - 请从 ImgURL 后台 "管理 - API 令牌" 获取
# !!! 重要:请妥善保管你的 API 令牌,不要泄露。
$Token = "<替换为你的Token>"
# 本地图片文件路径
# 例如:C:\Users\YourUser\Pictures\my_image.jpg
$ImagePath = "<替换为你的图片的具体路径>"
# 可选:如果你想上传到特定相册,请填写相册 ID。
# 如果不需要,请保持为空字符串或删除此行
$AlbumId = "" # 例如: "12345"
# ===================================================
# 脚本核心逻辑
# ===================================================
# 检查文件是否存在
if (-not (Test-Path $ImagePath)) {
Write-Host "错误:图片文件未找到!请检查路径是否正确:$ImagePath" -ForegroundColor Red
exit
}
# 构建 multipart/form-data 请求体
$FileBytes = [System.IO.File]::ReadAllBytes($ImagePath)
$FileName = [System.IO.Path]::GetFileName($ImagePath)
$Boundary = [System.Guid]::NewGuid().ToString("N")
$ContentType = "multipart/form-data; boundary=`"$Boundary`""
$Body = New-Object System.IO.MemoryStream
$Writer = New-Object System.IO.StreamWriter($Body)
# 添加 uid 字段
$Writer.WriteLine("--$Boundary")
$Writer.WriteLine("Content-Disposition: form-data; name=`"uid`"")
$Writer.WriteLine()
$Writer.WriteLine($Uid)
# 添加 token 字段
$Writer.WriteLine("--$Boundary")
$Writer.WriteLine("Content-Disposition: form-data; name=`"token`"")
$Writer.WriteLine()
$Writer.WriteLine($Token)
# 如果存在 album_id,则添加
if (-not [string]::IsNullOrEmpty($AlbumId)) {
$Writer.WriteLine("--$Boundary")
$Writer.WriteLine("Content-Disposition: form-data; name=`"album_id`"")
$Writer.WriteLine()
$Writer.WriteLine($AlbumId)
}
# 添加文件字段
$Writer.WriteLine("--$Boundary")
$Writer.WriteLine("Content-Disposition: form-data; name=`"file`"; filename=`"$FileName`"")
$Writer.WriteLine("Content-Type: application/octet-stream") # 或者根据图片类型设置,但 octet-stream 通常也适用
$Writer.WriteLine()
$Writer.Flush() # 确保前面的内容已写入
$Body.Write($FileBytes, 0, $FileBytes.Length)
$Writer.WriteLine()
$Writer.WriteLine("--$Boundary--")
$Writer.Flush()
$EncodedBody = $Body.ToArray()
$Body.Dispose()
$Writer.Dispose()
Write-Host "正在上传图片 '$FileName' 到 ImgURL..."
try {
# 发送 POST 请求
$Response = Invoke-RestMethod -Uri $ApiUrl -Method Post -ContentType $ContentType -Body $EncodedBody -TimeoutSec 60
# 处理响应
if ($Response.code -eq 200) {
Write-Host "图片上传成功!" -ForegroundColor Green
Write-Host "------------------------------------"
Write-Host "图片 URL: $($Response.data.url)"
Write-Host "缩略图 URL: $($Response.data.thumbnail_url)"
Write-Host "删除 URL: $($Response.data.delete)"
Write-Host "------------------------------------"
} else {
Write-Host "图片上传失败!" -ForegroundColor Red
Write-Host "错误代码: $($Response.code)"
Write-Host "错误消息: $($Response.msg)"
}
} catch {
Write-Host "请求发送失败或发生错误:" -ForegroundColor Red
Write-Host $_.Exception.Message -ForegroundColor Red
}

关于作者和DreamAI



631

被折叠的 条评论
为什么被折叠?



