gpt4 book ai didi

c# - 使用 C# 将 JSON 字符串直接添加到 Azure Blob 存储容器

转载 作者:行者123 更新时间:2023-12-03 22:53:11 24 4
gpt4 key购买 nike

我正在尝试加载 JSON 字符串(使用 Newtonsoft.Json 序列化)而不创建临时文件。

我使用 JsonConvert.SerializeObject(obj,settings) 在运行时序列化对象,它返回一个字符串。

按照 Microsoft 文档,我可以执行如下所示的操作:

// Create a local file in the ./data/ directory for uploading and downloading
string localPath = "./data/";
string fileName = "quickstart" + Guid.NewGuid().ToString() + ".txt";
string localFilePath = Path.Combine(localPath, fileName);

// Write text to the file
await File.WriteAllTextAsync(localFilePath, "Hello, World!");

// Get a reference to a blob
BlobClient blobClient = containerClient.GetBlobClient(fileName);

Console.WriteLine("Uploading to Blob storage as blob:\n\t {0}\n", blobClient.Uri);

// Open the file and upload its data
using FileStream uploadFileStream = File.OpenRead(localFilePath);
await blobClient.UploadAsync(uploadFileStream, true);
uploadFileStream.Close();

尽管它有效,但我必须为每个上传的 JSON 文件创建临时文件。

我尝试过这个:

BlobServiceClient blobServiceClient = new BlobServiceClient("SECRET");

BlobContainerClient container = BlobServiceClient.GetBlobContainerClient("CONTAINER_NAME");

container.CreateIfNotExistsAsync().Wait();

container.SetAccessPolicy(Azure.Storage.Blobs.Models.PublicAccessType.Blob);

CloudBlockBlob cloudBlockBlob = new CloudBlockBlob(container.Uri);

var jsonToUplaod = JsonConvert.SerializeObject(persons, settings);

cloudBlockBlob.UploadTextAsync(jsonToUpload).Wait();

但是,嗯......它没有权利工作,因为我没有在给定容器中指定任何实际文件(我不知道在哪里执行它)。

有没有办法将 blob 直接上传到给定容器?

提前谢谢您。

最佳答案

BlobClient 类需要一个 Stream,因此您可以从 JSON 字符串创建一个 MemoryStream
尝试这样的事情:

BlobClient blob = container.GetBlobClient("YourBlobName");

using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonToUpload)))
{
await blob.UploadAsync(ms);
}

关于c# - 使用 C# 将 JSON 字符串直接添加到 Azure Blob 存储容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61280495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com