Azure Blob下载为字节数组错误“;“内存流不可扩展”;

Azure Blob下载为字节数组错误“;“内存流不可扩展”;,azure,Azure,我想下载blob作为字节数组,但上面提到的错误发生了。 我的代码如下 Dim fullFileBytes() As Byte = {} Dim objAzureStorage As New AzureCloudStorage Dim fullImageBlob As Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob = objAzureStorage.CloudContainer.

我想下载blob作为字节数组,但上面提到的错误发生了。 我的代码如下

  Dim fullFileBytes() As Byte = {}
 Dim objAzureStorage As New AzureCloudStorage

                            Dim fullImageBlob As Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob = objAzureStorage.CloudContainer.GetBlockBlobReference(row(0))

                            fullImageBlob.DownloadToByteArray(fullFileBytes, 0)

因为我没有使用VB.Net,所以让我用C#提供一个答案。基本上,我所做的是读取内存流中blob的内容,然后将其转换为字节数组并返回该数组

    private static byte[] ReadBlobInByteArray()
    {
        var cred = new StorageCredentials(accountName, accountKey);
        var account = new CloudStorageAccount(cred, true);
        var container = account.CreateCloudBlobClient().GetContainerReference("container-name");
        var blob = container.GetBlockBlobReference("blob-name");
        using (var ms = new MemoryStream())
        {
            blob.DownloadToStream(ms);
            return ms.ToArray();
        }
    }

因为我没有使用VB.Net,所以让我用C#提供一个答案。基本上,我所做的是读取内存流中blob的内容,然后将其转换为字节数组并返回该数组

    private static byte[] ReadBlobInByteArray()
    {
        var cred = new StorageCredentials(accountName, accountKey);
        var account = new CloudStorageAccount(cred, true);
        var container = account.CreateCloudBlobClient().GetContainerReference("container-name");
        var blob = container.GetBlockBlobReference("blob-name");
        using (var ms = new MemoryStream())
        {
            blob.DownloadToStream(ms);
            return ms.ToArray();
        }
    }

我已经这样做了,但是当我像这样使用cblobFull.BeginDownloadToByteArray()时,上面提到的give错误。出现此错误的原因是字节数组的大小无法更改。如果希望在字节数组中直接读取,首先必须获取blob的属性,该属性将给出blob的长度。然后,您将创建一个该大小的字节数组,然后读取该字节数组中blob的内容。不建议这样做,因为您要进行两次网络调用:一次用于读取blob的属性,另一次用于实际下载blob。在我提到的方法中,您只进行一次网络呼叫。我已经这样做了,但是当我像这样使用cblobFull.BeginDownloadToByteArray()时,上面提到的give错误。出现此错误的原因是字节数组的大小无法更改。如果希望在字节数组中直接读取,首先必须获取blob的属性,该属性将给出blob的长度。然后,您将创建一个该大小的字节数组,然后读取该字节数组中blob的内容。不建议这样做,因为您要进行两次网络调用:一次用于读取blob的属性,另一次用于实际下载blob。在我提到的方法中,您只进行一次网络呼叫。嗯。