2012-06-14 17 views
5

Tôi muốn lưu trữ đối tượng .NET vào Bộ nhớ Azure Blob.Làm cách nào để tuần tự hóa đối tượng .NET vào Bộ nhớ Azure Blob mà không sử dụng tệp tạm thời?

Hiện nay tôi serialize nó thành một tập tin XML sử dụng TextWriter (episodeList là đối tượng tôi muốn serialized):

XmlAttributeOverrides overrides = new XmlAttributeOverrides(); 
XmlAttributes Xmlattr = new XmlAttributes(); 
Xmlattr.XmlRoot = new XmlRootAttribute("EPISODES"); 
overrides.Add(typeof(List<EpisodeData>), Xmlattr); 
XmlSerializer serializer = new XmlSerializer(typeof(List<EpisodeData>), overrides); 
TextWriter textWriter = new StreamWriter(@"C:\movie.xml"); 
serializer.Serialize(textWriter, episodeList); 
textWriter.Close(); 

và sau đó tải lên các tập tin vào Blob Bảo quản:

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); 
} 

Có thể bằng cách nào đó bỏ qua tệp tạm thời để XML được tải trực tiếp lên Azure Blob Storage?

+0

OK, vấn đề là gì? – sharptooth

+0

Có thể chỉ định đường dẫn bloob instad của C: \ movie.xml – Hope

Trả lời

6

Bạn có thể làm như sau. Tạo một cá thể MemoryStream và sử dụng XmlSerializer.Serialize(Stream stream) để tuần tự hóa đối tượng vào luồng bộ nhớ, sau đó "tua lại" luồng để bắt đầu sử dụng Seek(). Sau đó, bạn gọi số CloudBlob.UploadFromStream() để tải nội dung luồng lên blob.

+0

Ok nó hoạt động tốt .. – Hope

Các vấn đề liên quan