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

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

我正在尝试加载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直接上传到给定的容器吗?] >>

先谢谢您。

我正在尝试加载JSON字符串(使用Newtonsoft.Json序列化)而不创建临时文件。我正在使用JsonConvert.SerializeObject(obj,settings)在运行时序列化对象,该对象返回...

c# azure json.net azure-storage-blobs
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.