如何在不使用临时文件的情况下将.NET对象序列化为Azure Blob存储?
我想将.NET对象存储到Azure Blob存储中。
目前我使用TextWriter
将其序列化为XML文件( episodeList
是我想要序列化的对象):
XmlAttributeOverrides overrides = new XmlAttributeOverrides(); XmlAttributes Xmlattr = new XmlAttributes(); Xmlattr.XmlRoot = new XmlRootAttribute("EPISODES"); overrides.Add(typeof(List), Xmlattr); XmlSerializer serializer = new XmlSerializer(typeof(List), overrides); TextWriter textWriter = new StreamWriter(@"C:\movie.xml"); serializer.Serialize(textWriter, episodeList); textWriter.Close();
然后将文件上传到Blob存储:
CloudBlobClient blobStorage = createOrGetReferenceOfBlobStorage(folderName); string uniqueBlobName = string.Format("{0}/{1}", folderName, fileName); CloudBlockBlob blob = clouBblockBlobPropertySetting(blobStorage, uniqueBlobName, ".txt"); using (StreamWriter writer = new StreamWriter(blob.OpenWrite())) { writer.Write(content); }
有可能以某种方式跳过临时文件,以便将XML直接上载到Azure Blob存储中吗?
您可以执行以下操作。 创建一个MemoryStream
实例并使用XmlSerializer.Serialize(Stream stream)
将对象序列化到内存流中,然后使用Seek()
将流“回放”到开头。 然后调用CloudBlob.UploadFromStream()
将流内容上传到blob。