2013-08-07 3 views
6

मैं निम्नलिखित कोड है:क्लाउडब्लॉकब्लॉब क्यों है। डाउनलोड टॉस्ट्रीम हमेशा खाली स्ट्रीम लौट रहा है?

public static void UploadStreamToBlob(Stream stream, string containerName, string blobName) 
{ 
    CloudStorageAccount storageAccount = 
     CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString")); 
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 

    CloudBlobContainer blobContainer = blobClient.GetContainerReference(containerName); 
    blobContainer.CreateIfNotExists(); 
    blobContainer.SetPermissions(
     new BlobContainerPermissions 
     { 
      PublicAccess = BlobContainerPublicAccessType.Blob 
     }); 

    CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(blobName); 
    long streamlen = stream.Length; <-- This shows 203 bytes 
    blockBlob.UploadFromStream(stream);   
} 

और

public static Stream DownloadStreamFromBlob(string containerName, string blobName) 
{ 
    CloudStorageAccount storageAccount = 
     CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString")); 
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 

    CloudBlobContainer blobContainer = blobClient.GetContainerReference(containerName); 

    Stream stream = new MemoryStream(); 
    CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(blobName); 

    if (blockBlob.Exists()) 
    { 
     blockBlob.DownloadToStream(stream); 
     long streamlen = stream.Length; <-- This shows 0 bytes 
     stream.Position = 0;   
    } 

    return stream; 
} 

मैं Azure एमुलेटर है, जो मैं अपने Sql सर्वर की ओर इशारा किया है में यह चल रहा हूँ।

जो मैं कह सकता हूं उससे, ऐसा लगता है कि अपलोडफ्रॉमस्ट्रीम डेटा को सही तरीके से भेज रहा है, हालांकि, अगर मैं DownloadStreamFromBlob को चलाने और चलाने की कोशिश करता हूं, तो यह 0 लंबाई स्ट्रीम देता है। BlockBlob.Exists सच लौट रहा है, इसलिए मुझे लगता है कि यह वहां है। मैं सिर्फ यह नहीं समझ सकता कि मेरी स्ट्रीम खाली क्यों है।

बीटीडब्ल्यू, मैं दोनों कॉलों पर कंटेनरनाम और ब्लॉबनाम के लिए परीक्षण और परीक्षण में गुजर रहा हूं।

कोई भी विचार?

उत्तर

10

आह, मैं इसे समझ से बाहर ...

निम्नलिखित लाइनों:

long streamlen = stream.Length; 
blockBlob.UploadFromStream(stream); 

जरूरत

long streamlen = stream.Length; 
stream.Position = 0; 
blockBlob.UploadFromStream(stream); 
+1

+1 करने के लिए परिवर्तित किया जा सकता: बस मुझे एक खाली ब्लॉब से बाहर की मदद की परिदृश्य डाउनलोड करें ... अक्सर यह सरल विवरण है जो हमें यात्रा करता है। –

+1

धाराओं के साथ काम करते समय यह एक आम मुद्दा है। मैं अपने आईओ विधियों 'स्ट्रीम पर सेट करता हूं। सेक (0, सेकोऑरिगिन.बिन); ' –

संबंधित मुद्दे