Azure Blob下载为字节数组错误“;“内存流不可扩展”;
我想下载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.
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。在我提到的方法中,您只进行一次网络呼叫。嗯。