2012-06-14 10 views
5

.NETオブジェクトをAzure Blobストレージに保存したい。一時ファイルを使用せずに.NETオブジェクトをAzure Blobストレージにシリアル化するにはどうすればよいですか?

現在、私は(episodeList私はシリアル化された対象のオブジェクトである)TextWriterを使用してXMLファイルにそれをシリアル化:その後、

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

と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ストレージに直接アップロードされるようにしますか?

+0

問題は何ですか? – sharptooth

+0

C:\ movie.xmlのbloobパスinstadを指定することは可能ですか? – Hope

答えて

6

次の操作を行うことができます。 MemoryStreamインスタンスを作成し、XmlSerializer.Serialize(Stream stream)を使用してオブジェクトをメモリストリームにシリアル化し、次にストリームをSeek()を使用して開始するように「巻き戻し」ます。次に、CloudBlob.UploadFromStream()と呼んで、ストリームの内容をブロブにアップロードします。

+0

Okです。 – Hope

関連する問題