C# 如何生成Azure SAS签名,将内容长度头约束为特定值?
我目前正在实现ajax浏览器直接上传到azure存储容器。首先,我需要一个签名的url,该url允许我在不与浏览器共享私钥的情况下执行此操作(我在以前的ajax调用中向服务器请求此签名的url) 我的服务器端代码如下所示C# 如何生成Azure SAS签名,将内容长度头约束为特定值?,c#,azure-storage-blobs,azure-sdk-.net,C#,Azure Storage Blobs,Azure Sdk .net,我目前正在实现ajax浏览器直接上传到azure存储容器。首先,我需要一个签名的url,该url允许我在不与浏览器共享私钥的情况下执行此操作(我在以前的ajax调用中向服务器请求此签名的url) 我的服务器端代码如下所示 public string GetSignature(string fileName, int contentLength) { CloudBlobContainer blobContainer = this.BlobClient.GetContainerReferen
public string GetSignature(string fileName, int contentLength)
{
CloudBlobContainer blobContainer = this.BlobClient.GetContainerReference("demo");
CloudBlockBlob blob = blobContainer.GetBlockBlobReference("photo1.jpg");
SharedAccessBlobPolicy policy = new SharedAccessBlobPolicy()
{
Permissions = SharedAccessBlobPermissions.Create,
SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(10)
};
SharedAccessBlobHeaders headers = new SharedAccessBlobHeaders()
{
CacheControl = "",
ContentDisposition = "",
ContentEncoding = "",
ContentLanguage = "",
ContentType = ""
// PROBLEM: Where's content length?
};
return blob.GetSharedAccessSignature(policy, headers);
}
我的问题是,我找不到指定内容长度标题的方法。我需要这一点,以防止用户上传巨大的文件,一旦他们有一个存储报价,必须遵守
我在谷歌上搜索了很多,实际上找到了一种方法,即按照实现签名算法,但我自己实现所有这些只是我最后的选择(这将更容易出错,也更耗时)
所以我的问题是,有没有一种方法可以将内容长度约束传递给
PUT
签名url?目前没有方法对委托访问设置blob大小限制。(您提供的链接用于使用帐户密钥对请求进行签名;它不限制正在上载的blob的大小。)
在这种情况下,有两个因素会限制上载的数据量: