Cloudinary作为常用的云图片管理服务,提供了REST API用于管理存储的图片资源,其中销毁图片是资源清理的常用操作,而所有涉及修改资源的API请求都需要携带正确的请求签名才能完成鉴权,否则会返回401未授权错误。

Cloudinary请求签名的核心规则
Cloudinary的请求签名是基于特定参数拼接后,使用账户API Secret进行哈希计算得到的字符串,核心规则如下:
- 需要参与签名的参数按照参数名ASCII码升序排列
- 拼接格式为
参数1=值1&参数2=值2&...&API_Secret - 使用SHA1算法对拼接后的字符串进行哈希,得到十六进制小写字符串作为签名
- 时间戳参数timestamp为必填项,且需要参与签名计算
销毁图片的API基本信息
Cloudinary销毁图片的REST API地址为https://api.cloudinary.com/v1_1/{cloud_name}/image/destroy,请求方法为POST,需要携带的参数如下:
| 参数名 | 是否必填 | 说明 |
|---|---|---|
| public_id | 是 | 需要销毁的图片的公共ID,可在Cloudinary控制台查看 |
| timestamp | 是 | 当前Unix时间戳,单位为秒 |
| api_key | 是 | 账户的API Key,可在Cloudinary控制台获取 |
| signature | 是 | 按照规则生成的请求签名 |
签名生成示例代码(Python)
以下是使用Python生成签名并发起销毁请求的完整示例:
import hashlib
import time
import requests
# 替换为你的Cloudinary账户信息
CLOUD_NAME = "your_cloud_name"
API_KEY = "your_api_key"
API_SECRET = "your_api_secret"
def generate_signature(params, secret):
# 按照参数名ASCII升序排序
sorted_params = sorted(params.items())
# 拼接参数键值对
param_str = "&".join([f"{k}={v}" for k, v in sorted_params])
# 拼接API Secret
sign_str = f"{param_str}{secret}"
# SHA1哈希计算,得到十六进制小写字符串
signature = hashlib.sha1(sign_str.encode("utf-8")).hexdigest()
return signature
def destroy_image(public_id):
# 准备请求参数
params = {
"public_id": public_id,
"timestamp": int(time.time())
}
# 生成签名
signature = generate_signature(params, API_SECRET)
# 添加API Key和签名到请求参数
params["api_key"] = API_KEY
params["signature"] = signature
# 发起POST请求
url = f"https://api.cloudinary.com/v1_1/{CLOUD_NAME}/image/destroy"
response = requests.post(url, data=params)
return response.json()
if __name__ == "__main__":
# 替换为需要销毁的图片public_id
result = destroy_image("sample_image")
print(result)常见错误排查
如果请求返回鉴权失败,可检查以下几点:
- 确认参与签名的参数没有遗漏timestamp,且timestamp是当前有效的时间戳
- 检查参数拼接时是否按照ASCII升序排列,不要包含api_key和signature参数本身
- 确认API Secret填写正确,没有多余空格或字符
- 哈希算法是否使用SHA1,结果是否为小写十六进制字符串
注意:销毁图片操作不可逆,执行前请确认public_id对应的资源确实不需要保留,避免误删重要资源。
其他语言签名生成要点
如果是使用其他语言开发,核心逻辑和Python一致,只需要对应实现参数排序、字符串拼接、SHA1哈希三个步骤即可。例如Node.js中可使用crypto模块实现哈希计算,Java中可使用MessageDigest类处理SHA1算法,只要遵循Cloudinary的签名规则,就能正确生成可用的请求签名。
CloudinaryREST_API请求签名图片销毁API鉴权修改时间:2026-06-05 03:26:28