我创建了一个blobtrigger,每当我上传到容器时,它就会运行。但由于我将使用kraken来处理图像,然后将处理后的图像重新放置在原始图像的子文件夹中。
我不知道如何确保我不会触发海怪将图像上传到容器。。
文件夹设置
- 文件夹名称
- 文件.jpg
- 文件.jpg
海怪上传到文件夹(海怪文件夹(
-
文件夹名
- 文件.jpg
-
文件.jpg
-
krakenfolder
- krakenprocessedimage.jpg
- krakenprocessedimage.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 blobn 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);
}
由于blob存储没有"物理"文件夹,因此没有办法。name
中的所有内容都是同一平面结构中blob的一部分。即使名称是my/first/level/virtual/folder/text.txt
所以你必须在你的代码中过滤掉它,或者使用容器作为你的"文件夹"。
需要补充的是:过滤功能有限,但这些功能似乎都不适用于您想要的内容。
我不知道这是否是最好的方法,但它对我有效。
我用检查"/">
name.Count(x => x == '/') > 1