我正在尝试将blob从一个位置复制到另一个位置,看起来这个方法已经过时了。我读过的所有内容都说我应该使用" StartCopy"。但是,当我尝试这个时,它不会复制blob。我刚在目的地收到404错误。
我似乎无法为此找到任何文档。任何人都可以告诉我如何在最新版本的API中执行此操作,或指向我一些文档的方向。
Uri uploadUri = new Uri(destinationLocator.Path);
string assetContainerName = uploadUri.Segments[1];
CloudBlobContainer assetContainer =
cloudBlobClient.GetContainerReference(assetContainerName);
string fileName = HttpUtility.UrlDecode(Path.GetFileName(model.BlockBlob.Uri.AbsoluteUri));
var sourceCloudBlob = mediaBlobContainer.GetBlockBlobReference(fileName);
sourceCloudBlob.FetchAttributes();
if (sourceCloudBlob.Properties.Length > 0)
{
IAssetFile assetFile = asset.AssetFiles.Create(fileName);
var destinationBlob = assetContainer.GetBlockBlobReference(fileName);
destinationBlob.DeleteIfExists();
destinationBlob.StartCopyFromBlob(sourceCloudBlob);
destinationBlob.FetchAttributes();
if (sourceCloudBlob.Properties.Length != destinationBlob.Properties.Length)
model.UploadStatusMessage += "Failed to copy as Media Asset!";
}
答案 0 :(得分:1)
我只是发表评论作为答案,以便更容易看到。
它不是容器的访问级别。它与StartCopy
也没有任何关系。原来是这些代码行。
var mediaBlobContainer = cloudBlobClient.GetContainerReference(cloudBlobClient.BaseUri + "temporarymedia");
mediaBlobContainer.CreateIfNotExists();
显然我不应该提供cloudBlobClient.BaseUri
,只提供名称temporarymedia
。
var mediaBlobContainer = cloudBlobClient.GetContainerReference("temporarymedia");
但是没有相关的错误消息。希望将来某个时候能够保存另一个Azure新手。