我必须下载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。
问题出在哪里?谁能帮我吗?
答案 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();
}
}