【发布时间】:2018-03-24 00:12:36
【问题描述】:
我想使用其 JavaScript 客户端库将视频上传到 Azure Blob 存储。我有来自 API 的 SAS 令牌,并且我为 blob 服务创建了一个实例,如下所示:
var blobUri = 'https://<account>.blob.core.windows.net/';
vm.sasTOken = "?sv=2016-05-31&sr=c&sig=abcdefghhi&st=2017-10-12T07%3A10%3A05Z&se=2017-10-12T11%3A10%3A05Z&sp=rl"
var blobService = AzureStorage.createBlobServiceWithSas(blobUri, vm.sasToken);
我已尝试使用此服务上传视频
speedSummary = blobService.createBlockBlobFromBrowserFile('containerName', vm.file.name, vm.file, { blockSize: customBlockSize}, function (error, result, response) {
if (error) {
console.log(error);
} else {
console.log('success');
}
});
我不知道在哪里传递授权标头,这就是为什么它在控制台中给我错误的原因。
403(服务器验证请求失败。确保 Authorization 标头的值格式正确,包括签名。)
【问题讨论】:
-
您能分享一下您的 SAS 令牌是什么样的吗?您很可能拥有无效的 SAS 令牌。
-
像这样 ?sv=2016-05-31&sr=c&sig=rtPk88o2Y%2BpgFSk6JlJX8dPVUfx%2FhSfXkhQEDgyAn%2F8%3D&st=2017-10-12T06%3A55%3A09Z&se=2017-5%-2T 3A09Z&sp=rl
-
谢谢!为了在 blob 容器中上传文件,SAS 令牌应具有
Write权限。从您共享的 SAS 令牌中,您似乎只包含了Read和List权限。请创建具有Write权限的 SAS 令牌,然后重试。 -
@GauravMantri 我检查的令牌中已经存在写权限。
-
您能否编辑您的问题并包括以下内容:1)blobUri 的值(您可以用虚拟字符串替换实际帐户名称 2)
containerName的值您传入createBlockBlobFromBrowserFile函数和 3) 从 API 返回的vm变量的值。您可以将 SAS 令牌中的实际签名值替换为虚拟字符串。
标签: javascript angularjs azure azure-storage