我正在使用Kendo upload控件通过CORS上传到AmazonS3。我遇到了一个问题,我需要从服务器获取签名,然后将其添加到我创建的"上传"处理程序的事件对象的"数据"中。当然,问题是,在处理程序中,我发出一个异步请求来获取签名,而上传处理程序在没有我需要的签名数据的情况下继续它的快乐方式。发布的API没有"upload()"或在异步请求返回时可以调用的命令。
我在某个地方看到了一个ASP-Kendo-S3的例子,但从代码中还不清楚签名是如何获得的,当然,我没有使用ASP。
Kendo Upload有一个onUpload
事件。在Kendo的asp.net示例中,没有任何特定于该框架的东西不会移植到其他任何东西。
它们最初使用概要文件(base64编码的JSON)填充页面。
为了获得base64编码的json配置文件的签名,他们使用以下方法(C#):
private static string Sign(string text, string key)
{
var signer = new HMACSHA1(Encoding.UTF8.GetBytes(key));
return Convert.ToBase64String(signer.ComputeHash(Encoding.UTF8.GetBytes(text)));
}
它看起来非常不言自明,以至于你可以将它移植到另一种语言。