c# - 将文件从一个 Azure 存储帐户复制到另一个
问题描述
我正在尝试使用复制文件的StartCopy
方法将文件从一个存储帐户复制到另一个帐户。检查下面的代码。
CloudStorageAccount sourceStorageAccount = CloudStorageAccount.Parse(@"source storage account connection string");
CloudStorageAccount destStorageAccount = CloudStorageAccount.Parse(@"destination storage account connection string");
CloudBlobClient sourceBlobClient = sourceStorageAccount.CreateCloudBlobClient();
CloudBlobClient destBlobClient = destStorageAccount.CreateCloudBlobClient();
var sourceContainer = sourceBlobClient.GetContainerReference("sourceContainer");
var destContainer = destBlobClient.GetContainerReference("destContainer");
CloudBlockBlob sourceBlob = sourceContainer.GetBlockBlobReference("copy.txt");
CloudBlockBlob targetBlob = destContainer.GetBlockBlobReference("copy.txt");
targetBlob.StartCopy(sourceBlob);
但它总是返回以下错误。
Microsoft.WindowsAzure.Storage.StorageException:“远程服务器返回错误:(404)未找到。”
我在这里想念什么?
请注意,如果我尝试将文件从一个容器复制到同一存储帐户中的另一个容器,则相同的代码可以完美运行。
解决方案
请看以下关于如何执行复制的示例(取自Introducing Asynchronous Cross-Account Copy Blob):
public static void CopyBlobs(
CloudBlobContainer srcContainer,
string policyId,
CloudBlobContainer destContainer)
{
// get the SAS token to use for all blobs
string blobToken = srcContainer.GetSharedAccessSignature(
new SharedAccessBlobPolicy(), policyId);
var srcBlobList = srcContainer.ListBlobs(true, BlobListingDetails.None);
foreach (var src in srcBlobList)
{
var srcBlob = src as CloudBlob;
// Create appropriate destination blob type to match the source blob
CloudBlob destBlob;
if (srcBlob.Properties.BlobType == BlobType.BlockBlob)
{
destBlob = destContainer.GetBlockBlobReference(srcBlob.Name);
}
else
{
destBlob = destContainer.GetPageBlobReference(srcBlob.Name);
}
// copy using src blob as SAS
destBlob.StartCopyFromBlob(new Uri(srcBlob.Uri.AbsoluteUri + blobToken));
}
}
希望能帮助到你!
推荐阅读
- java - 从 ApplicationListener 关闭 spring 应用程序
- java - JavaFX 阶段的更新大小和位置不起作用
- azure - Azure 的 Terraform:storage_os_disk - 无效选项
- ios - 自定义 UIButton 的边缘在与它交互后看起来像素化
- ubuntu - 在 Ubuntu 上安装 Colcon
- android - 调整图像大小 - collapsingtoolbarlayout 中的闪烁问题
- c# - 使用复合 KeyFieldName 获取 ASPxGridView.RowUpdating 事件中的更新行
- python - Python安装问题
- javascript - Quill js 在编辑器中放置嵌入或 html 内容
- r - 基于R中多元回归中的变量从lm()中提取R2列表