私はいくつかのコンテナを持っています。 Foreachコンテナフォルダ名を含む別のストレージアカウントから空のフォルダを追加したい。私はそれから必要なデータを入力します。コンテナにサブフォルダを作成Azure Cはプログラムで
コンテナ内にフォルダを作成できるプロパティがあるかどうかはわかりません。
ここで私はsourceAccount
から2つの容器を持ち、もう1つはtargetAccount
です。 sourceAccout
からtagetAccount
にデータを送信しています。私のコンテナ内の私のターゲットアカウントでdayBlob
サブフォルダを作成したい。
このセクションではすべてのコンテナを取得しています。私がこれらの容器を手に入れたら、それぞれの名前がわかります。私たちはせずに、フォルダを作成することはできません、私は
static CloudStorageAccount sourceAccount = new CloudStorageAccount(new StorageCredentials("name", "key"), true);
static CloudStorageAccount targertAccount = new CloudStorageAccount(new StorageCredentials("name", "key"), true);
static void Main(string[] args)
{
DateTime dateToday = DateTime.Today;
DateTime date = new DateTime();
DateTime dateutc = TimeZoneInfo.ConvertTimeToUtc(date);
TimeSpan startDay = new TimeSpan(00, 00, 00);
TimeSpan endDay = new TimeSpan(23, 59, 59);
var sourceClient = sourceAccount.CreateCloudBlobClient();
var targetClient = targetAccount.CreateCloudBlobClient();
var testContainer = sourceClient.GetContainerReference("test");
var sourceContainer = sourceClient.GetContainerReference("downloads");
var itDropBoxContainer = sourceClient.GetContainerReference("it-dropbox");
var dayBlob = targetClient.GetContainerReference($"day{dateToday.Day}");
date = DateTime.Parse($"{dateToday.Day}/{dateToday.Month}/{dateToday.Year}");
var start = date + startDay;
var end = date + endDay;
IEnumerable<CloudBlobContainer> containers = sourceClient.ListContainers();
foreach (var items in containers)
{
var containerName = items.Name;
}
foreach (IListBlobItem item in testContainer.ListBlobs(useFlatBlobListing: true))
{
var blob = item as CloudBlockBlob;
var modificationDate = blob.Properties.LastModified;
// to set the modfication date as local time
var britishZone = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
var lastModified = TimeZoneInfo.ConvertTime((DateTimeOffset)modificationDate, britishZone);
if (lastModified > start && lastModified < end)
{
try
{
if (blob != null)
{
CloudBlockBlob sourceBlob = testContainer.GetBlockBlobReference(blob.Name);
CloudBlockBlob targetBlob = dayBlob.GetBlockBlobReference(blob.Name);
Console.WriteLine($"Successfully created a snapshot of blob {blob.Name}");
}
}
catch (Exception ex)
{
ExceptionHandler.LogError(ex, "Failed to copy to the target folder");
}
}
else
{
Console.WriteLine($"Failed to create a snapshot of blob {blob.Name}");
}
}
}
あなたの質問を更新し、解決しようとしている問題を教えてください。ソースアカウントのブロブをコンテナ名のターゲットアカウントにコピーしたい場合は、ターゲットアカウントに31個のブロブコンテナがあります。空のフォルダはどこにありますか? –
@GauravMantri私は自分の質問を更新しました。ターゲットコンテナごとに3つのフォルダを追加します。ソースコンテナ内のコンテナからこれらのフォルダの名前を取得したい –
ありがとう!しかし、私はあなたのコードを理解しているかどうかはわかりません。 forEachループを終了すると、 'containerName'変数の値は常にストレージアカウントの最後のコンテナの名前になります。または、このループ内にのみサブフォルダを作成したいですか? –