Here's my stab at this problem...this is off the top of my head and has not been thoroughly tested, but it does work against my pseudo web service. :-) YMMV
byte[] arrBuffer = new byte[0]; using(BinaryReader reader = new BinaryReader(webResponse.GetResponseStream())) { byte[] arrScratch = null; while((arrScratch = reader.ReadBytes(4096)).Length > 0) { if(arrBuffer.Length == 0) arrBuffer = arrScratch; else { byte[] arrTemp = new byte[arrBuffer.Length + arrScratch.Length]; Array.Copy(arrBuffer, arrTemp, arrBuffer.Length); Array.Copy(arrScratch, 0, arrTemp, arrBuffer.Length, arrScratch.Length); arrBuffer = arrTemp; } } } // use arrBuffer now... HTH, Seang -----Original Message----- From: Erick Thompson [mailto:[EMAIL PROTECTED]] Sent: Friday, May 03, 2002 2:24 PM To: [EMAIL PROTECTED] Subject: [DOTNET] Downloading a binary file using HttpWebResponse I'm downloading binary files from the Stream returned by a HttpWebResponse object. The stream returned does not support seeking or look aheads. I have no idea when the length of the stream will be (HttpWebResponse.ContentLength cannot be trusted). What is the fastest way to get the stream into an array of bytes? Below is the code that I'm using right now. It does work, but it's slow and memory intensive (due to the ArrayList and the cast to a byte array). There must be a better way. Thanks, Erick private void LoadBinaryContent(HttpWebResponse res) { Stream binStream = res.GetResponseStream(); BinaryReader reader = new BinaryReader(binStream); int len = (int)res.ContentLength; if (len == 0) { len = 100000; // make a guess } ArrayList tmp = new ArrayList(len); try { while (true) { tmp.Add(reader.ReadByte()); } } catch (EndOfStreamException) { byte b = 0; _binaryContent = (byte[])tmp.ToArray(b.GetType()); } reader.Close(); binStream.Close(); } You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com. You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.