1

我有一个私有的 Azure Blob。我正在尝试将 Azure 文件复制到 blob。这些都在同一个存储帐户中。

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

例如:await destinationBlob.StartCopyAsync(sourceCloudFile);

假设:这是因为我需要在 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";

好的 - 我有令牌.. 现在呢?

4

1 回答 1

2

请更改您的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 并调用StartCopy您的CloudBlockBlob对象。

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();
于 2017-03-27T06:48:24.140 回答