0

我创建了一个在我上传到容器时运行的 blobtrigger。但由于我打算使用 kraken 处理图像,然后将处理后的图像重新上传到原始图像的子文件夹中。

我无法弄清楚如何确保我不会触发 kraken 将图像上传到容器..

文件夹设置

  • 文件夹名称
    • 文件.jpg
    • 文件.jpg

Kraken 上传到文件夹(krakenfolder)

  • 文件夹名称

    • 文件.jpg
    • 文件.jpg

    • 海妖文件夹

      • 海妖处理图像.jpg
      • 海妖处理图像.jpg

目前我的 blobtrigger 也会在子文件夹上触发.. 如何检查它或阻止它这样做?

我现在的 blobtrigger

[FunctionName("ProductBlobDispatch")]
        public static async void Run(
            [BlobTrigger("products/{name}")]
            Stream myBlob,
            string name,
            ILogger log,
            string blobTrigger,
            [Queue("scanpipe-media-dispatch")] IAsyncCollector<MediaDispatchModel> imageProcessor)
        {
            log.LogInformation($"Blob trigger on product upload, processed blob\n Name: {name}\n Size: {myBlob.Length} Bytes");

            //convert stream to model.

            var model = new ImageProcessingModel()
            {
                Url = "/"+name,
                IsProduct = true,
                IsDeleted = false,
            };

            await imageProcessor.AddAsync(model);
        }
4

2 回答 2

2

由于 blob 存储没有“物理”文件夹,因此没有办法。中的所有内容都是name同一平面结构中 blob 的一部分。即使名字是my/first/level/virtual/folder/text.txt

所以你必须在你的代码中过滤掉它或者使用容器作为你的“文件夹”。

添加:过滤器功能有限,但似乎没有一个适用于您正在寻找的内容。

于 2020-03-12T10:27:20.150 回答
0

我不知道这是否是最好的方法,但它对我有用。

我检查'/'

name.Count(x => x == '/') > 1
于 2020-03-12T14:06:39.040 回答