【发布时间】:2015-07-01 09:40:59
【问题描述】:
所以我正在复制一个 blob blob 并使用以下代码覆盖另一个 blob newBlob:
CopyStatus copy = CopyStatus.Pending;
while (copy != CopyStatus.Success)
{
newBlob.StartCopyFromBlob(blob);
copy = manager.CheckIsDoneCopying(newBlob, container.Name);
}
newBlob 在复制之前已经有元数据,从here 我看到:
如果没有指定名称-值对,操作将复制 源 blob 元数据到目标 blob。如果一个或多个 指定名称-值对,创建目标 blob 指定的元数据,并且元数据不是从源复制的 斑点。
我收集的意思是旧的 blob 元数据不会被复制。我想强制原始 blob 覆盖 newBlob's 元数据,然后使用以下命令编辑 newBlobs 元数据:
newBlob.FetchAttributes();
if (newBlob.Metadata.ContainsKey(StorageManager.IsLive))
{
newBlob.Metadata[StorageManager.IsLive] = "Y";
}
else
{
newBlob.Metadata.Add(new KeyValuePair<string, string>(StorageManager.IsLive, "Y"));
}
if (newBlob.Metadata.ContainsKey(StorageManager.LastUploadedTime))
{
newBlob.Metadata[StorageManager.LastUploadedTime] = uploadedTime.Ticks.ToString();
}
else
{
newBlob.Metadata.Add(new KeyValuePair<string, string>(StorageManager.LastUploadedTime, uploadedTime.Ticks.ToString()));
}
是否可以强制覆盖旧 blob 中的新 blob 元数据?
编辑
如果我在代码中添加一行:
CopyStatus copy = CopyStatus.Pending;
newBlob.Metadata.Clear();
while (copy != CopyStatus.Success)
{...
元数据被复制过来。尽管这不是复制操作失败或永远不会完成的唯一方法,但这意味着我有一个无效的 newBlob。一定有比这更好的方法吗?
【问题讨论】:
标签: c# azure metadata azure-blob-storage