同じストレージアカウント上の共有とblobの間でいくつかのファイルを移動する必要があります。私は、このコードになってしまったいくつかのgoogleing後 :azureファイル共有とblobの間のファイルの移動
CloudFileClient fileClient = account.CreateCloudFileClient();
CloudFileShare share = fileClient.GetShareReference("shareName");
CloudFileDirectory rootDir = share.GetRootDirectoryReference();
CloudFileDirectory videoDirectory = rootDir.GetDirectoryReference(video.StoragePath);
CloudBlobClient blobClient = account.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(video.StoragePath);
container.CreateIfNotExists();
foreach (var Files in videoDirectory.ListFilesAndDirectories())
{
var arr = Files.Uri.ToString().Split('/');
string strFileName = arr[arr.Length - 1];
CloudFile sourceFile = videoDirectory.GetFileReference(strFileName);
string fileSas = sourceFile.GetSharedAccessSignature(new SharedAccessFilePolicy()
{
Permissions = SharedAccessFilePermissions.Read,
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24)
});
Uri fileSasUri = new Uri(sourceFile.StorageUri.PrimaryUri.ToString() + fileSas);
CloudBlockBlob blockBlob = container.GetBlockBlobReference(strFileName);
blockBlob.StartCopyAsync(fileSasUri).Wait(); //copy the file to blob storage and wait for the operation to complete
//sourceFile.DeleteAsync(); //delete the file
}
//videoDirectory.DeleteAsync(); //delete the directory
削除行が先をコメント解除している場合は、ソースフォルダではなく、サイズが0であるすべてのファイルが含まれています。
私は間違って何をしていますか?
また、すべてのファイルをコピーした後に共有ディレクトリを削除したいと考えています。ファイルが宛先フォルダにあるかどうかを確認する方法はありますか?
StartCopyを(asynchrousあり、その完了は、コピー処理が完了したことを意味しません。その後、コピー先のBLOBのコピー状態をチェックする必要があります。 –
(私は今見つけることができません)stackoverflowの別の答えによると、私はStartCopy()とDelete()を次々にやることができ、操作は同じアカウントで同期して実行されます。私もそれを試み、ファイルのサイズが0だった。 –