Kam*_*ski 5 c# azure json.net azure-storage-blobs
我正在尝试加载 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();
Run Code Online (Sandbox Code Playgroud)
虽然它有效,但我必须为每个上传的 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();
Run Code Online (Sandbox Code Playgroud)
但是,好吧......它没有权利工作,因为我没有在给定的容器中指定任何实际文件(我不知道在哪里做)。
有没有办法将 blob 直接上传到给定的容器?
先感谢您。
Bri*_*ers 16
该BlobClient班想要一个Stream,这样你就可以创建一个MemoryStream从您的JSON字符串。
尝试这样的事情:
BlobClient blob = container.GetBlobClient("YourBlobName");
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonToUpload)))
{
await blob.UploadAsync(ms);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6262 次 |
| 最近记录: |