как привязать к контейнеру, чтобы перебирать BLOB-объекты - PullRequest
0 голосов
/ 08 июля 2019

Можно ли выполнять итерации по BLOB-объектам внутри контейнера?

В настоящее время я добавил этот атрибут:

[Blob("%MyFunc:InputContainer%")]CloudBlobContainer inputContainer

Однако яМы не нашли никакой документации о том, как выполнять итерации по BLOB-объектам внутри inputContainer.

Ответы [ 3 ]

1 голос
/ 08 июля 2019

Вы должны быть в состоянии использовать inputContainer.ListBlobsSegmentedAsync():

BlobResultSegment blobResultSegment = await container.ListBlobsSegmentedAsync(null);

// Iterate each blob
foreach (IListBlobItem item in blobResultSegment.Results)
{
    // cast item to CloudBlockBlob
    CloudBlockBlob blob = (CloudBlockBlob)item;
}
1 голос
/ 08 июля 2019

Вы можете использовать ListBlobsSegmentedAsync для получения BLOB-объектов. Я связываю контейнер с этим: [Blob("firstcontainer")]CloudBlobContainer inputContainer.

И с кодом ниже, чтобы получить список BLOB-объектов:

            BlobContinuationToken blobContinuationToken = null;
            var results = await inputContainer.ListBlobsSegmentedAsync(null, blobContinuationToken);

            foreach (IListBlobItem item in results.Results)
            {
                log.LogInformation(item.Uri.Segments.Last());
            }

Это мой результат теста, вы можете попробовать. Имя BLOB-объекта с / означает, что это каталог .

enter image description here

Надеюсь, это поможет вам.

1 голос
/ 08 июля 2019

Ниже приведен базовый пример для этого.

#r "Microsoft.WindowsAzure.Storage"

using System;
using Microsoft.WindowsAzure.Storage.Blob;
using Microsoft.Extensions.Logging;

public static void Run(Stream myBlob, CloudBlobContainer container,ILogger log)
{
log.LogInformation($"Container name: {container.Name}");
var blob= container.GetBlockBlobReference("Bill.pdf");
log.LogInformation($"Blob size: {blob.StreamWriteSizeInBytes}");
log.LogInformation($"C# Blob trigger function processed {myBlob}");

}

function.json

{
"bindings": [
{
"connection": "AzureWebJobsStorage",
"path": "samples-workitems/{name}",
"name": "myBlob",
"type": "blobTrigger",
"direction": "in"
},
{
"name": "container",
"type": "blob",
"path": "output-images",
"connection": "AzureWebJobsStorage",
"direction": "in"
}
],
"disabled": false
}

function.Proj

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>  
<ItemGroup>
    <PackageReference Include="WindowsAzure.Storage" Version="9.3.3"/>
    <PackageReference Include="Newtonsoft.Json" Version="11.0.2"/>
</ItemGroup>
...