我正在创建一个Azure函数,该函数在图像上载或添加到特定Azure存储时触发,并执行以下操作: 1.)调整图像大小 2.)将图像放到正确的目录中(使用输出绑定) 3.)删除处理后添加到Azure存储的原始Blob映像。
我完成了流程中的第1步和第2步,但我发现很少或没有关于删除blob或API的文档,这些文档会公开Azure存储的方法。 (使用C#)
以下是示例代码:
#r "System.Drawing"
using System;
using ImageResizer;
using System.Drawing;
using System.Drawing.Imaging;
public static void Run(Stream inputImage, string imageName, Stream resizedImage, TraceWriter log)
{
// Log the file name and size
log.Info($"C# Blob trigger function Processed blob\n Name:{imageName} \n Size: {inputImage.Length} Bytes");
// Manipulate the image
var settings = new ImageResizer.ResizeSettings
{
MaxWidth = 400,
Format = "png"
};
ImageResizer.ImageBuilder.Current.Build(inputImage, resizedImage, settings);
// Delete the Raw Original Image Step
}
答案 0 :(得分:7)
要删除blob,您需要
AppBarLayout
请确保在尝试之前关闭所有流,以便不再使用该图像。
答案 1 :(得分:7)
确保导入正确的引用:
#r "Microsoft.WindowsAzure.Storage"
using Microsoft.WindowsAzure.Storage.Blob;
然后您可以使用CloudBlockBlob作为参数类型并将其删除:
public static void Run(CloudBlockBlob myBlob, string name, TraceWriter log)
{
myBlob.DeleteIfExists();
}
答案 2 :(得分:0)
使用C#时,您可以对函数使用多种输入类型,这里的webjobs sdk cheat sheet详细介绍了大多数可用的输入类型。
在您的情况下,您可以将输入图像请求为CloudBlockBlob
,其中包含删除方法。您可以在调整大小函数内或单独触发的函数中调用它来删除已完成的blob。您可能需要将约束direction
更改为inout
,请参阅here。
目前没有自动清理的约束力。
答案 3 :(得分:0)
如果您使用的是最新的库
<块引用>Azure.Storage.Blobs
你可以像这样删除它...
BlobClient client = new BlobClient("connectionString", "container", "blobName");
client.DeleteIfExists();