我们如何使用 C# 更新和上传内容到 Azure 中的 Blob

问题描述

我提出问题和答案,希望能让他人受益。你需要安装 Azure.Storage.Blobs 包

解决方法

查看下面的代码

// 一个内容上传类 // 安装包 Azure.Storage.Blobs

using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Specialized;
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;

namespace AnAzureFunctionApp
{
    public class ContentUploader
    {
        public async Task UploadContentsToBlob(string azureStorageAccountConnectionString,string storageContainerName,string blobFileName)
        {
            var blobServiceClient = new BlobServiceClient(azureStorageAccountConnectionString);

            // Create the container and return a container client object
            var containerClient = blobServiceClient.GetBlobContainerClient(storageContainerName);
            await containerClient.CreateIfNotExistsAsync();

            var blobClient = containerClient.GetBlockBlobClient(blobFileName);

            await AddBlobContents(blobClient);
        }

        private async Task AddBlobContents(BlockBlobClient blobClient)
        {
            await using var memoryStream = new MemoryStream();

            // Download the blob's contents if it exist and save it to a memory file
            if (blobClient.Exists())
            {
                var blobDownloadInfo = await blobClient.DownloadAsync();
                await blobDownloadInfo.Value.Content.CopyToAsync(memoryStream);
            }

            byte[] timeBytes = Encoding.UTF8.GetBytes("Process is Run at " + DateTime.Now + Environment.NewLine);
            await memoryStream.WriteAsync(timeBytes,timeBytes.Length);
            memoryStream.Position = 0;

            //Upload the contents
            await blobClient.UploadAsync(memoryStream);
            memoryStream.Close();
        }
    }
}