C# 如何使用Azure函数删除blob?

C# 如何使用Azure函数删除blob?,c#,azure,azure-functions,C#,Azure,Azure Functions,我正在创建一个Azure函数,该函数在图像上载或添加到特定Azure存储时触发,它执行以下操作: 1.)调整图像大小 2.)将映像放入正确的目录(使用输出绑定) 3.)删除处理后添加到Azure存储的原始blob映像 我已经完成了流程中的步骤1和步骤2,但是我发现关于删除blob或API的文档很少甚至没有,这些文档将公开Azure存储的方法。(使用C#) 以下是示例代码: #r "System.Drawing" using System; using ImageResizer; using Sy

我正在创建一个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
}

在使用C#时,您可以对函数使用多种输入类型,下面是webjobs sdk,详细介绍了大多数可用的输入类型

在您的情况下,您可以将输入图像请求为,它有一个delete方法。您可以在调整大小函数中调用此函数,也可以在单独触发的函数中调用此函数来删除已完成的blob。您可能需要将绑定
方向更改为
inout
,请参阅


目前没有进行自动清理的绑定。

要删除blob,您需要

var container = blobClient.GetContainerReference(containerName);
var blockBlob = container.GetBlockBlobReference(fileName);
return blockBlob.DeleteIfExists();

请确保在尝试此操作之前关闭所有流,以便图像不再使用。

确保导入了正确的引用:

#r "Microsoft.WindowsAzure.Storage"
using Microsoft.WindowsAzure.Storage.Blob;
然后可以使用CloudBlockBlob作为参数类型并将其删除:

public static void Run(CloudBlockBlob myBlob, string name, TraceWriter log)
{
    myBlob.DeleteIfExists();
}

如果您使用的是最新的库

Azure.Storage.Blobs

你可以这样删除它

BlobClient client = new BlobClient("connectionString", "container", "blobName");
client.DeleteIfExists();

已尝试,但出现错误:Microsoft.Azure.WebJobs.Host:错误索引方法“Functions.ImageUploadToBlobTrigger”。Microsoft.Azure.WebJobs.Host:无法将BlobTrigger绑定到类型“Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob”。是否将方向更改为inout
?这里有一个可能也有帮助的示例:谢谢,是的,我将方向改为inout。但是仍然有相同的错误。当使用命令绑定到云类型时,似乎存在一个问题。美好的这就是我真正想要的。ThanksHow您正在获取blobClient吗?可以通过安装WindowsAzure.Storage nuget软件包来获取blobClient。然后将名称空间Microsoft.WindowsAzure.Storage.Blob添加到项目中。很好,正是我想要的,谢谢!