当前位置: 首页 > 知识库问答 >
问题:

如何使用Azure函数删除blob?

呼延庆
2023-03-14

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

共有3个答案

董砚
2023-03-14

当您使用C#时,您可以在您的函数中使用多种输入类型,这是详细介绍大多数可用输入类型的webJobs sdk备忘单。

在您的例子中,您可以请求输入图像作为具有删除方法的CloudBlockBlob。您可以在resizing函数内调用此函数,也可以在单独触发的函数中调用此函数来删除已完成的blob。您可能需要将绑定方向更改为输入,请参见此处。

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

程天佑
2023-03-14

确保导入了正确的引用:

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

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

public static void Run(CloudBlockBlob myBlob, string name, TraceWriter log)
{
    myBlob.DeleteIfExists();
}
施飞鸿
2023-03-14

要删除blob,您需要

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

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

 类似资料:
  • 我一直在寻找一种技术,使用浏览器中的代码编辑器,使用Azure函数删除Cosmos数据库中的项目。我不想在VS上使用本地开发的代码,原因有很多。 这里提供了我使用的代码,我使用的是带有CosmosDB输入和输出绑定的HttpTrigger。它们的名称非常明显(inputDocument,outputDocument)。 这段代码在从db读取项目和编写新文档方面工作得非常好,但是我希望能够删除单个项

  • 我想创建一个Azure函数,当上次修改时间超过30天时,从azure blob存储中删除文件。有人能帮忙或者有文档来做吗?

  • 我正在发布和订阅Azure事件中心,它在存储帐户中的容器中使用blob。消息不使用此存储帐户发布,而是使用另一个存储帐户。 我可以看到租赁状态为“已租赁”的blob。我认为删除它并再次创建它可能会解决这个问题,所以我尝试删除它并创建一个新的。但无法删除。我还尝试破坏租约,但它再次将租约状态设置为“已租赁”。 有什么办法解决这个问题吗?

  • 我创建了一个Azure函数,在每次用户上传图片到我的存储容器时创建一个缩略图。 我的问题是,当用户删除图片时,如何删除缩略图?我可以使用Blob触发器吗?我应该使用时间触发器来检查哪个缩略图没有相关联的图片并删除该缩略图吗?

  • 问题内容: 我正在使用 jQuery* 更改 CSS ,并希望根据输入值删除要添加的样式: * 我怎样才能做到这一点? 请注意,只要使用颜色选择器选择了颜色(即,当鼠标移至色轮上时),以上行就会运行。 第二注:我不能这样做,因为它将从 CSS* 文件中删除默认样式。 我只想删除 jQuery添加的内联样式。 * 问题答案: 将属性更改为空字符串似乎可以完成此工作:

  • 问题内容: function doSomethingWith(param) { document.body.addEventListener( ‘scroll’, function() { document.write(param); }, false ); // An event that I want to remove later } setTimeout( function() { doc