Forum Discussion
ford_sopris
Jul 19, 2022Copper Contributor
Azure Function to unzip blob to specific blob folder
If this is not the right group to post this, please let me know. I am not much of a developer but have a need to extract a ZIP file that resides in a Blob Container into the same container in a spec...
Kidd_Ip
Oct 17, 2025MVP
Try Azure Function Code (C#)
using System.IO;
using System.IO.Compression;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Specialized;
public static class UnzipBlobFunction
{
[FunctionName("UnzipBlobFunction")]
public static async Task Run(
[BlobTrigger("input-container/{name}", Connection = "AzureWebJobsStorage")] Stream zipBlob,
string name,
ILogger log)
{
string zipFileNameWithoutExtension = Path.GetFileNameWithoutExtension(name);
string outputContainerName = "input-container"; // same container
var blobServiceClient = new BlobServiceClient(Environment.GetEnvironmentVariable("AzureWebJobsStorage"));
var containerClient = blobServiceClient.GetBlobContainerClient(outputContainerName);
using (var archive = new ZipArchive(zipBlob))
{
foreach (var entry in archive.Entries)
{
if (string.IsNullOrEmpty(entry.Name)) continue; // skip folders
string outputBlobPath = $"{zipFileNameWithoutExtension}/{entry.Name}";
var outputBlobClient = containerClient.GetBlobClient(outputBlobPath);
using (var entryStream = entry.Open())
using (var memoryStream = new MemoryStream())
{
await entryStream.CopyToAsync(memoryStream);
memoryStream.Position = 0;
await outputBlobClient.UploadAsync(memoryStream, overwrite: true);
}
log.LogInformation($"Extracted: {outputBlobPath}");
}
}
}
}