导读:本期聚焦于小伙伴创作的《如何正确使用Cloudinary REST API生成请求签名来销毁图片》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何正确使用Cloudinary REST API生成请求签名来销毁图片》有用,将其分享出去将是对创作者最好的鼓励。

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

如何正确使用Cloudinary REST API生成请求签名来销毁图片

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

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。