如何将txt蔚蓝blob下载为纯文本文件?

问题描述 投票:0回答:1

我必须下载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));
}

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

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

c# azure text download azure-storage-blobs
1个回答
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();
                }
            }
© www.soinside.com 2019 - 2024. All rights reserved.