如何将txt的天蓝色blob下载为纯文本文件?

时间:2020-05-21 08:52:49

标签: c# azure text download azure-storage-blobs

我必须下载Azure容器中允许匿名访问的一些txt文件。我正在使用Visual Studio 2017,该程序是Windows窗体应用程序。

这是我的代码(其中myUri是包含Uri的字符串,而myContainer是包含容器的字符串):

BlobServiceClient blobServiceClient = new BlobServiceClient(new Uri(myUri));
BlobContainerClient container = blobServiceClient.GetBlobContainerClient(myContainer);

Azure.Pageable<BlobItem> blobs = container.GetBlobs(BlobTraits.All,BlobStates.All);
foreach (BlobItem blob in blobs)
{
       BlobClient bc = container.GetBlobClient(blob.Name);
       bc.DownloadTo(new FileStream(path + blob.Name, FileMode.Create));
}

我可以在本地路径中看到具有正确名称的文件,问题是,如果我尝试使用普通的编辑器(如Notepad ++)打开.txt,我会看到编码的字符而不是普通的ASCII。

问题出在哪里?谁能帮我吗?

1 个答案:

答案 0 :(得分:0)

(评论太久了)

虽然我在您的代码中看不到任何会导致编码问题的问题,但是您可以尝试以下方法下载您的Blob。在这里,我使用BlobDownloadInfo类来了解正在下载内容的内容类型,并使用Content.CopyTo方法写入流。

            Azure.Pageable<BlobItem> blobs = container.GetBlobs(BlobTraits.All, BlobStates.All);
            foreach (BlobItem blob in blobs)
            {

                BlobClient blobClient = container.GetBlobClient(blob.Name);
                BlobDownloadInfo download = blobClient.Download();
                Console.WriteLine("Content Type " + download.ContentType);
                using (FileStream downloadFileStream = File.OpenWrite(Path.Combine(@"YourPath", blob.Name)))
                {
                    download.Content.CopyTo(downloadFileStream);
                    downloadFileStream.Close();
                }
            }
相关问题