Azure функция blobtrigger не должна срабатывать в подпапках - PullRequest
0 голосов
/ 12 марта 2020

Я создал blobtrigger, который запускается всякий раз, когда я загружаю в свой контейнер. Но так как я собираюсь использовать kraken для обработки изображения, а затем повторно загрузить обработанные изображения в подпапку исходного изображения.

Я не могу понять, как убедиться, что я не собираюсь запускать при загрузке изображений в контейнер кракеном.

Настройка папки

  • Folderame
    • file.jpg
    • file.jpg

Kraken загружает в папку (krakenfolder)

  • имя_фолдера

    • file.jpg
    • file.jpg

    • krakenfolder

      • krakenprocessedimage.jpg
      • krakenprocessedimage.jpg

В настоящее время мой blottrigger также запускает в подпапках .. как можно проверить это или помешать ему это сделать?

Мой 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);
        }

Ответы [ 2 ]

2 голосов
/ 12 марта 2020

Поскольку в хранилище BLOB-объектов нет «физических» папок, пути нет. Все в name является частью капли в той же плоской структуре. Даже если имя my/first/level/virtual/folder/text.txt

, поэтому вы должны отфильтровать его в своем коде или использовать контейнеры в качестве «папки».

Добавить: Ограниченные возможности фильтра но ни один из них, похоже, не относится к тому, что вы ищете.

0 голосов
/ 12 марта 2020

Я не знаю, если это лучший способ сделать это, но это работает для меня.

Я проверяю '/' с

name.Count(x => x == '/') > 1
...