我正在尝试将视频文件从本地Azure存储复制到C#中的远程存储,以便能够使用Azure Media Services对其进行编码。
使用StartCopy方法检索副本的blob后,我返回了404 NOT FOUNT异常。
destinationBlob.StartCopy(new Uri(sourceBlob.Uri.AbsoluteUri + signature));
sourceBlob.Uri.AbsoluteUri
的值是本地Uri(http://127.0.0.1/参数)
我希望执行该副本,但是却收到404错误。
答案 0 :(得分:1)
很遗憾,您将无法使用Copy Blob
功能来完成此操作。原因是Copy Blob
操作是服务器端异步操作,需要Storage Service才能到达副本源。
由于复制源是本地模拟器中的blob,因此Storage Service无法达到该目标,因此您将收到404错误。
您需要做的是首先从本地计算机上的仿真器下载blob,然后将blob上传到云中。
答案 1 :(得分:1)
此示例使您可以将Task传递给该函数,该函数接受Stream作为要处理的对象。您将需要调整 utils.GetBlockBlobReference 以指向您的实际Blob参考。此方法为Wtire打开流,您可能还需要一个打开流进行读取的流。我有不同的提供商来读取/写入存储。
public async Task Use(string pointer, Func<System.IO.Stream, Task> useAction)
{
if (useAction == null)
{
throw new ArgumentNullException(nameof(useAction));
}
var blobRef = await utils.GetBlockBlobReference(storageFactory, pointer);
using (var cloudStream = await blobRef.OpenWriteAsync())
{
await useAction(cloudStream);
}
}