c# - 从单个 Azure 容器下载所有 Blob

标签 c# azure azure-blob-storage

我正在尝试使用代码从单个 Azure 容器下载所有 Blob。当我下载每个 Blob 时,我希望新文件名是从 2.jpg 向上到 3.jpg、4.jpg 5.jpg 等的连续数字。这不是 azure 容器中 Blob 的名称,我不知道代码运行时每个 Blob 的名称。

我似乎在最后一个障碍上摔倒了,我不知道要在 foreach block 中放入什么内容才能将文件放入 \home\pi\Pictures\ 我的本地硬盘上的目录。

urls.DownloadToStream(FileStream); 引发错误,

List String does not contain a definition for DownloadToStream

FileStream is a type which is not valid in the given context.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
using System.Configuration;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Threading;

namespace CPGetAdverts
{
    class Program
    {
        static void Main(string[] args)
        {
            // Retrieve storage account from connection string.
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["AzureImagesConnection"].ConnectionString);
            // Create the blob client.
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
            // Retrieve a reference to a container.
            var container = blobClient.GetContainerReference("xxxxxx/").ListBlobs();
            // Retrieve filenames from container List
            var urls = new List<string>();
            int fileName = 2;
            foreach (var blob in container)
                {
                using (var fileStream = System.IO.File.OpenWrite(@"\home\pi\Pictures\"+ fileName + ".jpg")) ;
                urls.DownloadToStream(FileStream);
                fileName++;
                }

        }
    }
}

非常感谢任何帮助。

最佳答案

此行有几个问题:

urls.DownloadToStream(FileStream);
  • urls 是一个字符串列表,因此它不会包含 DownloadToStream 方法
  • FileStream 应为 fileStream

尝试将循环更改为:

foreach (var blob in container)
{
    using (var fileStream = System.IO.File.OpenWrite(@"\home\pi\Pictures\"+ fileName + ".jpg"))
    {
        var blobReference = blobClient.GetBlobReferenceFromServer(blob.Uri);
        blobReference.DownloadToStream(fileStream);
        fileName++;
    }
}

关于c# - 从单个 Azure 容器下载所有 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35164783/

相关文章:

.net - $.connection.hub.start().done() 上出现错误 500

azure - 如何在Azure逻辑应用程序中动态更改GET请求

flash - 在 Windows Azure Blob 存储中重新托管 Flash SWF?

azure - 具有 Azure SQL 数据库的分布式锁管理器

azure-sql-database - Azure sql server 备份到 Azure blob - CherrySafe 替换

c# - 与 .NET Core 应用程序共享 ASP.NET Owin Cookie,同时将 key 保存到 Azure 存储

c# - 将 orderby、Skip() 和 Take() 与 LINQ 一起使用时出现重复行

c# - Request.UrlReferrer 对于 HTTPS 为 NULL

c# - C# WinForms 应用程序中的应用程序范围的消息处理程序

c# - 如何在 C# 中获取另一个网站页面的 JavaScript 函数的结果?