You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用客户端签名上传图片到Cloudinary报错无效签名如何解决

问题根因

你遇到的签名错误核心是待签名参数与Cloudinary服务端校验规则不匹配,错误提示中已经明确给出服务端用来校验的待签名字符串仅为timestamp=1631318071,但你服务端计算签名时加入了多余参数:

  • 待签名字典加入了不需要参与签名的参数:Cloudinary签名规则仅要求传入除file、api_key、signature之外的所有上传参数,你当前把api_key、api_secret、cloud_name都加入了待签名集合,直接导致签名结果错误。
  • 手动将api_secret加入待签名集合:Cloudinary官方C# SDK的SignParameters方法会自动在待签名字符串末尾拼接API Secret,不需要手动把api_secret放入待签名字典。
修复后的服务端代码
DateTime foo = DateTime.Now;
long timeStamp = ((DateTimeOffset)foo).ToUnixTimeSeconds();
// 仅加入需要签名的上传参数,无需加api_key、api_secret、cloud_name
var p = new Dictionary<string, object>();
p.Add("timestamp", timeStamp);
// 若后续新增其他上传参数(如folder、public_id等),需同步加入此字典参与签名
var signature = _cloudinary.Api.SignParameters(p);
return Ok(new {
   cloudUploadUrl = _cloudUploadUrl, 
   cloudName = _cloudinaryConfig.Value.CloudName, 
   cloudApiKey = _cloudinaryConfig.Value.ApiKey, 
   cloudSignature = signature,
   cloudTimeStamp = timeStamp
});
补充说明

你的Angular客户端代码逻辑不需要修改,参数传递符合要求。如果后续上传时新增了其他自定义参数,需要同步将这些参数加入服务端的待签名字典,否则仍会触发签名错误。

内容的提问来源于stack exchange,提问作者chuckd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:09:02