[英]how to bind to a container in order to iterate through blobs
是否可以遍历容器内部的斑点?
目前,我添加了以下属性:
[Blob("%MyFunc:InputContainer%")]CloudBlobContainer inputContainer
但是,我没有找到有关如何遍历inputContainer
内的blob的任何文档。
下面是为此的基本示例。
#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>
您应该可以使用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;
}
您可以使用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名称表示它是目录 。
希望这可以对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.