【问题标题】:How to download txt azure blobs as plain text files?如何将 txt azure blobs 下载为纯文本文件?
【发布时间】:2020-09-07 20:38:41
【问题描述】:

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

这是我的代码(myUri 是包含 Uri 的字符串,myContainer 是 Container 的字符串):

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。

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

【问题讨论】:

  • 您可以尝试使用StreamWriter 或任何其他支持指定编码(如UTF-8)的API。
  • 您的代码对我来说看起来不错。看起来像一个带有“txt”扩展名的二进制文件。我建议通过 Storage Explorer 之类的工具下载文件并检查是否确实如此。

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


【解决方案1】:

(评论太长)

虽然我在您的代码中看不到任何会导致编码问题的问题,但您可以尝试以下方法来下载您的 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();
                }
            }

【讨论】:

  • 谢谢!我试过你的代码,它至少帮助我消除了我对真实内容类型的怀疑,因为控制台总是说“内容类型 text/plain; charset=utf-8”。在记事本++中,我仍然看到奇怪的字符....但我开始认为这不是我的错,可能我必须要求客户进行一些检查。
  • @Ludovico Ristori,如果您在门户中查看文件,您会看到strange chars inn 文件吗?
猜你喜欢
  • 2019-07-11
  • 2021-07-10
  • 1970-01-01
  • 2020-09-16
  • 2021-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多