【问题标题】:How to delete a blob using Azure Functions?如何使用 Azure Functions 删除 blob?
【发布时间】:2017-02-09 06:09:59
【问题描述】:

我正在创建一个 Azure 函数,该函数在图像上传或添加到特定 Azure 存储时触发,它执行以下操作: 1.) 调整图像大小 2.) 将图像放到正确的目录中(使用输出绑定) 3.) 删除处理后添加到 Azure 存储的原始 blob 图像。

我已完成该过程中的步骤 1 和 2,但我发现关于删除会公开 Azure 存储方法的 blob 或 API 的文档几乎没有。 (使用 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# azure azure-functions


    【解决方案1】:

    要删除 blob,您需要

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

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

    【讨论】:

    • 不错!这就是我真正想要的。谢谢
    • 你是如何获得 blobClient 的?
    • 可以通过安装WindowsAzure.Storage nuget包获得。然后将命名空间 Microsoft.WindowsAzure.Storage.Blob 添加到项目中。
    • 完美,正是我想要的,谢谢!
    【解决方案2】:

    确保导入了正确的参考:

    #r "Microsoft.WindowsAzure.Storage"
    using Microsoft.WindowsAzure.Storage.Blob;
    

    然后你可以使用CloudBlockBlob作为参数类型并删除它:

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

    【讨论】:

      【解决方案3】:

      当您使用 C# 时,您可以在函数中使用多种输入类型,这里是 webjobs sdk cheat sheet 详细介绍了大多数可用的输入类型。

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

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

      【讨论】:

      • 已尝试,但出现错误:Microsoft.Azure.WebJobs.Host:错误索引方法“Functions.ImageUploadToBlobTrigger”。 Microsoft.Azure.WebJobs.Host:无法将 BlobTrigger 绑定到类型“Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob”。
      • 你把方向改成inout了吗?这里有一个示例也可能有所帮助:github.com/Azure/azure-webjobs-sdk-script/tree/dev/sample/…
      • 谢谢,是的,我将方向更改为 inout。但仍然有同样的错误。
      • 使用命令式绑定到云类型时似乎存在问题。 github.com/Azure/Azure-Functions/issues/508
      【解决方案4】:

      如果您使用的是最新的库

      Azure.Storage.Blobs

      你可以这样删除它...

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-31
        • 2022-11-06
        • 2019-06-12
        • 2019-07-29
        • 2019-11-28
        • 1970-01-01
        • 2020-03-12
        • 1970-01-01
        相关资源
        最近更新 更多