2017-02-09 63 views
4

我正在創建Azure功能,該功能會在圖像上載或添加到特定Azure存儲時觸發,並執行以下操作: 1.)調整圖像大小 2.)將圖像放到正確的目錄中(使用輸出綁定) 3.)刪除處理後添加到Azure存儲的原始Blob圖像。如何使用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 
} 

回答

5

要刪除的斑點,你需要

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

確保您關閉所有流,你試試這個,因此圖像不再使用之前。

+0

不錯!這是我真正想要的。謝謝 – Raven

0

當您使用C#您可以使用多種輸入類型的功能,這裏的webjobs SDK cheat sheet詳細大部分可用的人的。

就你而言,你可以請求你的輸入圖像爲CloudBlockBlob,它有一個刪除方法。您可以在調整大小函數內或在單獨觸發的函數內調用此函數以刪除已完成的斑點。您可能需要將綁定direction更改爲inout,請參閱here

目前沒有自動清理的約束。

+0

試過,但給出了一個錯誤: 微軟。 Azure.WebJobs.Host:錯誤索引方法'Functions.ImageUploadToBlobTrigger'。 Microsoft.Azure.WebJobs.Host:無法綁定BlobTrigger以鍵入'Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob'。 – Raven

+0

你有沒有改變'inout'的方向?這裏有一個示例可能會有幫助:https://github.com/Azure/azure-webjobs-sdk-script/tree/dev/sample/BlobTrigger-CSharp –

+0

謝謝,是的,我改變了方向,以inout。但仍然有同樣的錯誤。 – Raven

3

一定要具有進口權的引用:

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

然後你可以使用CloudBlockBlob作爲參數類型,並將其刪除:

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