读取和写入同一个 Azure blob 的 WebJob

WebJob to read from and write to the same Azure blob

我正在尝试使用 webjob 处理上传到 azure 的图像。我有 2 个容器 imagethumbs

目前,我正在从 image 容器读取数据,创建缩略图并使用以下代码将其写入 thumbs 容器,效果很好。

public static void GenerateThumbnail([QueueTrigger("addthumb")] ImageDTO blobInfo,
                [Blob("images/{Name}", FileAccess.Read)] Stream input, [Blob("thumbs/{Name}")] CloudBlockBlob outputBlob)
    {
        using (Stream output = outputBlob.OpenWrite())
        {
            ConvertImageToThumbnail(input, output, blobInfo.Name);
            outputBlob.Properties.ContentType = GetMimeType(blobInfo.Name);
        }
    }

现在,我还想从image容器中调整主图像的大小(如果它太大),压缩并用它替换原来的图像。

有没有办法读取和写入同一个 blob?

是的,您可以 read/write 到同一个 blob。例如,您可以使用 FileAccess.ReadWrite:

更改 input 绑定以绑定到 CloudBlockBlob
public static void GenerateThumbnail(
    [QueueTrigger("addthumb")] ImageDTO blobInfo,
    [Blob("images/{Name}", FileAccess.ReadWrite)] CloudBlockBlob input,
    [Blob("thumbs/{Name}")] CloudBlockBlob output)
{
    // Process the image  
}

然后您可以访问该 blob 上的 OpenRead/OpenWrite 流方法来读取图像 blob 并根据需要 process/modify 它。