gpt4 book ai didi

c# - 尝试将 Azure 文件复制到 Azure Blob 时如何使用 Azure SAS

转载 作者:行者123 更新时间:2023-12-03 01:48:12 24 4
gpt4 key购买 nike

我有一个私有(private)的 Azure Blob。我正在尝试将 Azure 文件复制到 blob。它们都位于同一个存储帐户中。

当我尝试将 Azure 文件复制到 Blob 时,收到 404。

例如:等待destinationBlob.StartCopyAsync(sourceCloudFile);

假设:这是因为我需要提供 Shared Access Signature在 Azure 文件上。

所以,我不知道如何使用 SAS 将文件复制到 Blob。

var policy = new Microsoft.WindowsAzure.Storage.File.SharedAccessFilePolicy()
{
Permissions = Microsoft.WindowsAzure.Storage.File.SharedAccessFilePermissions.List,
SharedAccessExpiryTime = new DateTimeOffset(DateTime.UtcNow.AddDays(1))
};
var sasToken = source.CloudFile.GetSharedAccessSignature(policy);

destinationBlob.Properties.ContentType = "image/jpg";

好的 - 我有 token ..现在怎么办?

最佳答案

请更改 SharedAccessFilePolicy 中的权限。为了复制文件,权限应该是Read而不是List

var policy = new Microsoft.WindowsAzure.Storage.File.SharedAccessFilePolicy()
{
Permissions = Microsoft.WindowsAzure.Storage.File.SharedAccessFilePermissions.Read,
SharedAccessExpiryTime = new DateTimeOffset(DateTime.UtcNow.AddDays(1)
};

获得 SAS 后,您只需为该文件创建 SAS URL 并在 CloudBlockBlob 对象上调用 StartCopy 即可。

var sasToken = source.CloudFile.GetSharedAccessSignature(policy);
var fileSasUri = new Uri(string.Format("{0}{1}", source.CloudFile.Uri.AbsoluteUri, sasToken));
var copyId = await destinationBlob.StartCopyAsync(fileSasUri);

要设置目标 blob 的内容类型,在复制完成后,您可以执行以下操作:

destinationBlob.Properties.ContentType = "image/jpg";
await destinationBlob.SetPropertiesAsync();

关于c# - 尝试将 Azure 文件复制到 Azure Blob 时如何使用 Azure SAS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43039518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com