使用Azure功能更新Blob数据

问题描述 投票:0回答:1

我在 Azure 存储帐户的容器中有一个 excel 文件。我需要使用 C# 最好使用 BlobTrigger 模板,使用 Azure 函数动态更新具有输入参数的列的行。已经有了读取 blob 的代码,但没有找到任何可以更新文件的内容。

谢谢

我尝试使用 SpreadsheetDocument 类,但无法走得太远。

c# azure function
1个回答
0
投票

如果您想执行此操作,则需要在本地下载 blob 并进行更改,然后将其推送回来,如果多个用户同时访问文件,这会导致问题。

您应该研究 SQL 数据库存储解决方案。

如果您想尝试的话,我为您提供了简单的上传/下载 blob 方法。您将需要插入自己的逻辑来在本地更新文档。

public async Task DownloadBlobs()
{
    var blob = "<BLOB_NAME>";

    CloudStorageAccount storageAccount = CloudStorageAccount.Parse( "DefaultEndpointsProtocol=https;AccountName=<ACCOUNT_NAME>;AccountKey=<ACCOUNT_KEY>");
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
    CloudBlobContainer container = blobClient.GetContainerReference("<CONTAINER_NAME>");
    CloudBlockBlob blockBlob = container.GetBlockBlobReference(blob);

    string path = $@"C:\Temp\{blob}.csv";
    string directoryPath = Path.GetDirectoryName(path);

    if (!Directory.Exists(directoryPath))
    {
        Directory.CreateDirectory(directoryPath);
    }

    try
    {
        using (var fileStream = System.IO.File.OpenWrite(path))
        {
            await blockBlob.DownloadToStreamAsync(fileStream);
        }
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
    }
}

public async Task UploadBlob()
{
    string path = @"C:\Temp\<BLOB_NAME>.csv";

    try
    {
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse( "DefaultEndpointsProtocol=https;AccountName=<ACCOUNT_NAME>;AccountKey=<ACCOUNT_KEY>");
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer container = blobClient.GetContainerReference("<CONTAINER_NAME>");
        CloudBlockBlob blockBlob =    container.GetBlockBlobReference(blobFilePath.Split(@"\Temp\").LastOrDefault());

        CloudBlockBlob blob = container.GetBlockBlobReference(blobFilePath.Split(@"\Temp\").Last());

        await blob.UploadFromFileAsync(blobFilePath);
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.