Gau*_*tri 26
我没有使用,Azure Storage Data Movement Library但我很确定它也可以在同一个存储帐户中使用.
回到你的问题,由于MoveAzure存储本身不支持操作,你可以做的是通过调用Copy Blob后跟来实现Delete Blob.通常,Copy操作是异步的,但是当在同一存储帐户中复制blob时,它是同步操作,即即时复制.请参阅下面的示例代码:
static void MoveBlobInSameStorageAccount()
{
var cred = new StorageCredentials(accountName, accountKey);
var account = new CloudStorageAccount(cred, true);
var client = account.CreateCloudBlobClient();
var sourceContainer = client.GetContainerReference("source-container-name");
var sourceBlob = sourceContainer.GetBlockBlobReference("blob-name");
var destinationContainer = client.GetContainerReference("destination-container-name");
var destinationBlob = destinationContainer.GetBlockBlobReference("blob-name");
destinationBlob.StartCopy(sourceBlob);
sourceBlob.Delete(DeleteSnapshotsOption.IncludeSnapshots);
}
Run Code Online (Sandbox Code Playgroud)
但是,请记住,您仅将此代码用于在同一存储帐户中移动blob.要在存储帐户之间移动blob,您需要确保在删除源Blob之前完成复制操作.
Dar*_*elk 18
这对我有用(回答@Deumber更好的答案后编辑回复):
public async Task<CloudBlockBlob> Move(CloudBlockBlob srcBlob, CloudBlobContainer destContainer)
{
CloudBlockBlob destBlob;
if (srcBlob == null)
{
throw new Exception("Source blob cannot be null.");
}
if (!destContainer.Exists())
{
throw new Exception("Destination container does not exist.");
}
//Copy source blob to destination container
string name = srcBlob.Uri.Segments.Last();
destBlob = destContainer.GetBlockBlobReference(name);
await destBlob.StartCopyAsync(srcBlob);
//remove source blob after copy is done.
srcBlob.Delete();
return destBlob;
}
Run Code Online (Sandbox Code Playgroud)
RJa*_*nes 18
此问题中接受的答案将文件移动到您的服务器内存,然后再次将文件上传到azure.
最好让工作变得天蓝色
CloudBlobClient blobClient = StorageAccount.CreateCloudBlobClient();
CloudBlobContainer sourceContainer = blobClient.GetContainerReference(SourceContainer);
CloudBlobContainer targetContainer = blobClient.GetContainerReference(TargetContainer);
CloudBlockBlob sourceBlob = sourceContainer.GetBlockBlobReference(fileToMove);
CloudBlockBlob targetBlob = targetContainer.GetBlockBlobReference(newFileName);
await targetBlob.StartCopyAsync(sourceBlob);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14316 次 |
| 最近记录: |