如何解决在C#中读取Binary类型的Azure Blob
我在下面的代码中尝试返回blob的内容。我可以使用DownloadTextAsync读取文件并返回内容,但是如果blob为二进制类型,则我的代码将失败,因此我想读取流,然后在返回字符串之前执行文本读取器方法。我无法实现这一点,想要一些建议来完成以下代码。使用下面的代码,我在“ recJson”中得到空值,没有错误。
public async Task<Stream> DownloadBlob(string containerName,string fileName,string connectionString)
{
if (string.IsNullOrEmpty(connectionString))
{
connectionString = @"UseDevelopmentStorage=true";
containerName = "testblobs";
}
var result = new MemoryStream();
Microsoft.Azure.Storage.CloudStorageAccount storageAccount = Microsoft.Azure.Storage.CloudStorageAccount.Parse(connectionString);
CloudBlobClient serviceClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = serviceClient.GetContainerReference(containerName);
CloudBlockBlob blob = container.GetBlockBlobReference(fileName);
if (blob.Exists())
{//DownloadAsync
using (result = new MemoryStream())
{
await blob.DownloadToStreamAsync(result);
var result1 = result.ToArray();
using var reader = new StreamReader(result);
var recJson = reader.ReadToEnd();
}
解决方法
我怀疑在下载到MemoryStream
之后,该流的位置在末尾,因此StreamReader
没什么可读取的。在result.Position = 0;
之前尝试reader.ReadToEnd();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。