我必须下载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。
哪里出问题了?谁能帮我吗?
(评论太久)
虽然我在您的代码中看不到任何会导致编码问题的问题,但是您可以尝试以下方法下载您的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();
}
}