首页 > 解决方案 > 想要使用新的 sdk - Azure.Storage.Blobs 包从 blob 内的文件夹下载和上传文件

问题描述

我想通过在新的 sdk - Azure.Storage.Blobs 包中使用字符串中的路径和 jsonContent 来下载和上传文件夹中的 json 文件。我可以按照下面的代码使用旧库来做到这一点 -

上传代码 -

`public async Task<bool> UploadToBlob(string path, string jsonContentString)
    {
        CloudBlobContainer container = _cloudBlobClient.GetContainerReference(Constant.ContainerName);
        CloudBlockBlob blockBlob = container.GetBlockBlobReference("dose/NotificationDefinition/dose_dosedailyreport.json");
        await blockBlob.UploadTextAsync(jsonContentString);
        return true;
    }`

下载代码 -

public async Task<string> GetDataFromStorage()
    {
        CloudBlobContainer container = _cloudBlobClient.GetContainerReference(Constant.ContainerName);
        var blockBlob = container.GetBlockBlobReference("dose/NotificationDefinition/dose_dosedailyreport.json");
        return await blockBlob.DownloadTextAsync();
    }

包含 json 文件的文件夹的快照

标签: c#azure.net-coreblobazure-blob-storage

解决方案


试试下面的代码。基本上我们正在创建一个实例BlockBlobClient并调用它的上传UploadDownload下载方法。

    static void UploadDownloadTest()
    {
        var blobName = "dose/NotificationDefinition/dose_dosedailyreport.json";
        var containerName = "test";
        var connectionString = "UseDevelopmentStorage=true";
        var blockBlobClient = new BlockBlobClient(connectionString, containerName, blobName);
        var jsonContentString = "This is the data I wish to upload";
        using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonContentString)))
        {
            var httpHeaders = new BlobHttpHeaders()
            {
                ContentType = "application/json"
            };
            blockBlobClient.Upload(ms, httpHeaders);
        }
        Console.WriteLine("Upload Successful!");
        var downloadResponse = blockBlobClient.Download().Value;
        using (var stream = downloadResponse.Content)
        {
            byte[] buffer = new byte[downloadResponse.ContentLength];
            stream.Read(buffer, 0, buffer.Length);
            var responseData = Encoding.UTF8.GetString(buffer);
            Console.WriteLine("Blob contents....");
            Console.WriteLine(responseData);
        }
    }

推荐阅读