Как переписать BLOB-объект, если он существует в месте назначения - PullRequest
0 голосов
/ 15 ноября 2018

Я использую TransferManager для копирования больших двоичных объектов из одного контейнера в другой.

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");

TransferManager.CopyAsync(sourceBlob, targetBlob, true).Wait();

Но когда файл существует в месте назначения, он выдает ошибку с указанием

"Пропущенный файл \ "https://sourceabcd.blob.core.windows.net/sourcecontainer/test1.txt\" потому что цель \ "https://sourceabcd.blob.core.windows.net/destcontainer/test1.txt\" уже существует. "} System.Exception {Microsoft.WindowsAzure.Storage.DataMovement.TransferSkippedException

Есть ли возможность перезаписать файл, если он существует в месте назначения?

1 Ответ

0 голосов
/ 15 ноября 2018

Вероятно, вы получаете исключение из здесь

Я думаю, что вы можете сделать что-то вроде ниже

TransferContext transferContext = new SingleTransferContext();
transferContext.ShouldOverwriteCallbackAsync = TransferContext.ForceOverwrite;
TransferManager.CopyAsync(sourceBlob, targetBlob, true,null,transferContext).Wait();

Я не имею большого представления оэто, но я нашел несколько тестовых случаев на github здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...