有没有办法将 blob 从本地存储模拟器复制到远程 azure 存储?
Is there a way to copy a blob from the local storage emulator to a remote azure storage?
我正在尝试将视频文件从本地 Azure 存储复制到 C# 中的远程存储,以便能够使用 Azure 媒体服务对其进行编码。
使用 StartCopy 方法检索副本的 blob 后,返回了 404 NOT FOUNT 异常。
destinationBlob.StartCopy(new Uri(sourceBlob.Uri.AbsoluteUri + signature));
sourceBlob.Uri.AbsoluteUri
的值是本地Uri(http://127.0.0.1/参数)
我希望执行副本,但我却收到 404 错误。
很遗憾,您将无法使用 Copy Blob
功能完成此操作。 Copy Blob
操作的原因是异步服务器端操作,需要存储服务才能到达复制源。
由于复制源是本地模拟器中的一个 blob,存储服务无法访问它,因此您会收到 404 错误。
您需要做的是先从本地计算机上的模拟器下载 blob,然后将 blob 上传到云端。
- 您需要两个到 Azure 存储的连接。
- 您需要在模拟器中连接到本地视频文件并将其视为流(称为 localStream)。
- 然后您需要在 Azure 存储中打开您的目标(远程)端点并将其打开
作为流写入(称之为 remoteStream)
- 然后您可以执行 localStream.CopyTo(remoteStream);
此示例允许您将 Task 传递给此函数,该函数接受 Stream 作为要处理的对象。您需要调整 utils.GetBlockBlobReference 以指向您的实际 blob 引用。此方法为 Wtire 打开流,您可能还需要一个打开流以供读取的方法。我有不同的供应商 reading/writing 存储。
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);
}
}
我正在尝试将视频文件从本地 Azure 存储复制到 C# 中的远程存储,以便能够使用 Azure 媒体服务对其进行编码。
使用 StartCopy 方法检索副本的 blob 后,返回了 404 NOT FOUNT 异常。
destinationBlob.StartCopy(new Uri(sourceBlob.Uri.AbsoluteUri + signature));
sourceBlob.Uri.AbsoluteUri
的值是本地Uri(http://127.0.0.1/参数)
我希望执行副本,但我却收到 404 错误。
很遗憾,您将无法使用 Copy Blob
功能完成此操作。 Copy Blob
操作的原因是异步服务器端操作,需要存储服务才能到达复制源。
由于复制源是本地模拟器中的一个 blob,存储服务无法访问它,因此您会收到 404 错误。
您需要做的是先从本地计算机上的模拟器下载 blob,然后将 blob 上传到云端。
- 您需要两个到 Azure 存储的连接。
- 您需要在模拟器中连接到本地视频文件并将其视为流(称为 localStream)。
- 然后您需要在 Azure 存储中打开您的目标(远程)端点并将其打开 作为流写入(称之为 remoteStream)
- 然后您可以执行 localStream.CopyTo(remoteStream);
此示例允许您将 Task 传递给此函数,该函数接受 Stream 作为要处理的对象。您需要调整 utils.GetBlockBlobReference 以指向您的实际 blob 引用。此方法为 Wtire 打开流,您可能还需要一个打开流以供读取的方法。我有不同的供应商 reading/writing 存储。
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);
}
}