2008-12-11 5 views
129

से बाइट सरणी कैसे बनाएं I एक छवि घटक का उपयोग कर रहा हूं जिसमें एक FromBinary विधि है। सोच रहे हैं कि मैं एक बाइट सरणीHttpPostedFile

HttpPostedFile file = context.Request.Files[0]; 
byte[] buffer = new byte[file.ContentLength]; 
file.InputStream.Read(buffer, 0, file.ContentLength); 

ImageElement image = ImageElement.FromBinary(byteArray); 
+0

का उपयोग कैसे हम एक और .aspx पृष्ठ के रिकॉर्ड पोस्ट कर रहे हैं? – shivi

+0

यह लाइन ** फ़ाइल नहीं है। इनपुटस्ट्रीम। पढ़ें (बफर, 0, फ़ाइल। सामग्री लम्बाई); ** बफर को इनपुट स्ट्रीम से बाइट से भरें? हमें नीचे दिए गए उत्तर में @Wolfwyrd द्वारा उल्लिखित ** BinaryReader.ReadBytes (...) ** का उपयोग क्यों करना चाहिए? ** ImageElement.FromBinary (बफर) नहीं होगा; ** समस्या को ठीक करें? –

उत्तर

244

उपयोग एक BinaryReader वस्तु में मेरी इनपुट धारा परिवर्तित की तरह धारा से एक बाइट सरणी वापस जाने के लिए:

byte[] fileData = null; 
using (var binaryReader = new BinaryReader(Request.Files[0].InputStream)) 
{ 
    fileData = binaryReader.ReadBytes(Request.Files[0].ContentLength); 
} 
+1

जैसा कि नीचे बताया गया है, बी। रीडबाइट्स (file.InputStream.Length); बाइट होना चाहिए [] binData = b.ReadBytes (file.ContentLength); के रूप में। तरंगदैर्ध्य एक लंबा है जबकि ReadBytes एक int की अपेक्षा करता है। – Spongeboy

+0

बाइनरी रीडर को बंद करना याद रखें। –

+0

एक आकर्षण की तरह काम करते हैं। इस सरल समाधान के लिए धन्यवाद (जेफ, स्पंजॉय और क्रिस की टिप्पणियों के साथ)! – David

3
अपने प्रश्न में

, दोनों बफ़र और bytearray करने लगते हैं बाइट [] हो। तो:

ImageElement image = ImageElement.FromBinary(buffer); 
20
BinaryReader b = new BinaryReader(file.InputStream); 
byte[] binData = b.ReadBytes(file.InputStream.Length); 

लाइन 2

byte[] binData = b.ReadBytes(file.ContentLength); 
10

साथ प्रतिस्थापित किया जाना चाहिए अपनी फ़ाइल InputStream.Position धारा के अंत में सेट है, तो यह काम नहीं करेगा। मेरे अतिरिक्त लाइनें:

Stream stream = file.InputStream; 
stream.Position = 0; 
+7

आप अभी 'file.InputStream.Position = 0; ' –

2

stream.copyto से पहले, आप 0 के stream.position रीसेट करना होगा; फिर यह ठीक काम करता है।

2
चित्रों के लिए

यदि आपका का उपयोग कर वेब पृष्ठ v2 WebImage Class

var webImage = new System.Web.Helpers.WebImage(Request.Files[0].InputStream); 
byte[] imgByteArray = webImage.GetBytes(); 
संबंधित मुद्दे