2012-06-14 13 views
5

Chcę przechowywać obiekt .NET w magazynie Blob Azure.Jak serializować obiekt .NET do magazynu Azure Blob bez użycia pliku tymczasowego?

Obecnie szeregować je w pliku XML przy użyciu TextWriter (episodeList jest przedmiotem Chcę odcinkach):

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

a następnie przesłać plik do Blob Przechowywanie:

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

Czy to możliwe w jakiś sposób pominąć plik tymczasowy, aby plik XML został bezpośrednio przesłany do magazynu Azure Blob?

+0

OK, o co chodzi? – sharptooth

+0

Czy jest możliwe określenie instancji ścieżki blooba C: \ movie.xml – Hope

Odpowiedz

6

Można wykonać następujące czynności. Utwórz instancję MemoryStream i użyj XmlSerializer.Serialize(Stream stream), aby serializować obiekt do strumienia pamięci, a następnie "przewiń" strumień do początku, korzystając z Seek(). Następnie zadzwoń pod numer CloudBlob.UploadFromStream(), aby przesłać zawartość strumienia do obiektu blob.

+0

Ok jej praca jest w porządku .. – Hope

Powiązane problemy