使用New-AzureStorageContext时如何设置自定义路径实现Blob指定目录上传
解决方法
New-AzureStorageContext 是用于创建存储账号级别的身份上下文对象,本身没有可以直接指定容器内子路径的参数,你需要手动将目标路径拼接在生成的容器SAS URI后面即可实现指定目录上传。
具体修改步骤:
- 生成容器级SAS URI的逻辑保持不变,之后直接把你需要的目标路径(
test/demo,注意Blob路径用正斜杠而非反斜杠)拼接在SAS URI的末尾即可 - 注意拼接格式:需要先把容器基础地址和SAS令牌拆分,在两者之间插入目标路径再重新拼接
代码示例:
# Set AzStorageContext $destinationContext = New-AzureStorageContext -ConnectionString "DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=xxx;" # Generate container SAS URI $containerSASURI = New-AzureStorageContainerSASToken -Context $destinationContext -ExpiryTime (get-date).AddSeconds(3600) -FullUri -Name "xxx" -Permission rw -Protocol HttpsOnly # 拆分SAS URI为容器基础地址和SAS令牌部分,拼接目标路径 $uriParts = $containerSASURI -split "\?", 2 $targetSASURI = "$($uriParts[0])/test/demo?$($uriParts[1])"
对应AzCopy命令:
直接使用拼接后的URI作为目标地址即可,文件会自动上传到test/demo目录下:
azcopy copy "本地文件路径" $targetSASURI
如果目标路径在容器中不存在,AzCopy会自动创建该层级目录,无需提前手动创建。
内容的提问来源于stack exchange,提问作者KS9000
相关产品推荐
相关产品推荐

