【问题标题】:Local file path not found while download blob file using c#使用c#下载blob文件时找不到本地文件路径
【发布时间】:2018-02-23 14:41:03
【问题描述】:

我是 Blob 存储的新手。我正在尝试下载 blob 文件。但我面临一个例外

对路径“C:\Users\xxx\Downloads”的访问被拒绝。

请分享您的观点。提前致谢

CloudStorageAccount storageAccount = CloudStorageAccount.Parse("connectionstring");
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("_report");
CloudBlockBlob blockBlob = container.GetBlockBlobReference("Report / report1 / YYY.pdf");            

// Save blob contents to a file.    
blockBlob.DownloadToStream(System.IO.File.OpenWrite(@"C:\Users\xxx\Downloads"));

【问题讨论】:

  • 我的观点是,无论这段代码正在运行什么上下文,都没有对该路径的权限。不幸的是,您没有提供关于这个程序是什么以及它是如何运行的信息。
  • 您尝试“OpenWrite”的文件名是什么?您在哪里指定该名称?看起来您可能正在尝试将目录作为文件流打开..
  • 流正在尝试将“@”C:\Users\xxx\Downloads 作为文件打开,并且在该位置需要额外的访问权限。您可能需要更改 @"C:\Users \xxx\Downloads" 到 @"C:\Users\xxx\Downloads\somefile.txt"

标签: c# blob


【解决方案1】:

将最后一行代码改成如下:

        using (Stream str = System.IO.File.OpenWrite(@"C:\Users\xxx\Downloads\somefile.txt"))
        {
            blockBlob.DownloadToStream(str);
        }

路径现在指向下载目录中的一个文件。之前的值试图在 C:\Users\xxx\ 中创建一个名为 downloads 的文件

请处置您的信息流。 (使用 using-keyword 完成)

【讨论】:

  • CloudBlockBlob blockBlob = container.GetBlockBlobReference("Report / report1 / YYY.pdf");在这段代码中,我提到了 blob 路径。这是正确的方法吗?因为我想从子文件夹下载一个 blob。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
  • 2021-06-05
  • 2020-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多