मैं स्ट्रीम के माध्यम से क्लाउडब्लोब से एक फ़ाइल डाउनलोड करने का प्रयास कर रहा हूं। मैं इस लेख CloudBlobक्लाउडब्लोब। डाउनलोड टॉस्ट्रीम रिटर्न शून्य
यहाँ का उल्लेख ब्लॉब
public Stream DownloadBlobAsStream(CloudStorageAccount account, string blobUri)
{
Stream mem = new MemoryStream();
CloudBlobClient blobclient = account.CreateCloudBlobClient();
CloudBlockBlob blob = blobclient.GetBlockBlobReference(blobUri);
if (blob != null)
blob.DownloadToStream(mem);
return mem;
}
और कोड यह बाइट सरणी
public static byte[] ReadFully(Stream input)
{
byte[] buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
लेकिन मैं हमेशा शून्य मान पाने में परिवर्तित करने के डाउनलोड करने के लिए कोड है। नीचे स्ट्रीम की गई फाइल की सामग्री है।
इसमें क्या गलत है? कृपया मदद करे।
संपादित
ReadFully
विधि के अंदर 0 को स्थिति की स्थापना की अनुमति नहीं है, इसलिए मैं इसके अंदर DownloadBlobAsStream
डाल अब यह काम करना चाहिए:
public Stream DownloadBlobAsStream(CloudStorageAccount account, string blobUri)
{
Stream mem = new MemoryStream();
CloudBlobClient blobclient = account.CreateCloudBlobClient();
CloudBlockBlob blob = blobclient.GetBlockBlobReference(blobUri);
if (blob != null)
blob.DownloadToStream(mem);
mem.Position = 0;
return mem;
}
आपकी ओर से कुछ गलतफहमी नहीं है के रूप में क्या आप वाकई 0 को स्थिति सेट कर सकते हैं @ ReadFully लेकिन आप उपयोग करना "इनपुट" वस्तु की जरूरत है। ऑब्जेक्ट मेम में DownloadBlobAsStream() के अंदर स्थानीय दायरा है, इसलिए यदि आप mem.Position को सेट करना चाहते हैं तो यह इस फ़ंक्शन में किया जाना चाहिए, हालांकि जब आप ReadFully() को कॉल करते हैं और अपनी "स्ट्रीम" ऑब्जेक्ट पास करते हैं, तो आप इसकी स्थिति 0 पर सेट कर सकते हैं ठीक है, जैसा कि मैंने अपनी पोस्टिंग में दिखाया है। तो दोनों स्वीकार किए जाते हैं और काम करेंगे। – AvkashChauhan
यदि मैंने रीडफुलली के अंदर स्थिति = 0 सेट किया है, तो यह एक त्रुटि "समर्थित नहीं है" फेंकता है, और जब मैं इनपुट प्रॉपर्टी को देखने की कोशिश करता हूं, 'CanSeek = false' लेकिन आपके विचार ने बहुत मदद की। :) – fiberOptics
बस स्पष्ट करने के लिए क्या आप एक शून्य मान या खाली बाइट सरणी प्राप्त कर रहे हैं? मैंने शून्य मूल्य नहीं देखा है, लेकिन स्ट्रीम स्थिति को बदलने के बिना किसी भी तरीके से मेरे परीक्षण में एक खाली बाइट सरणी देखी है। – kendaleiv