Da se ne bi mnogo pisalo, bolje je ovako:
u while petlji se podaci baferuju, u suprotnom bi imao gresku sa vecim fajlovima koje prevuces. Ovo bi trebalo da ti zavrsi posao. Mozes da iskljucis static i da dodas ivent hendlere kako bi izveo neki progres bar (ako skidas velike fajlove bilo bi korisno)
Code:
public static MemoryStream HttpDownload(string p_URL)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
Stream responseStream = null;
try
{
request = (HttpWebRequest) WebRequest.Create(p_URL);
request.Credentials = CredentialCache.DefaultCredentials;
response = (HttpWebResponse) request.GetResponse();
responseStream = response.GetResponseStream();
byte[] fileSize = new byte[response.ContentLength];
int bufferSize = 4096;
byte[] buffer = new byte[bufferSize];
int targetBufferIndex = 0;
while(true)
{
int n = responseStream.Read(buffer, 0, bufferSize);
if (n == 0) break;
Array.Copy(buffer, 0, fileSize, targetBufferIndex, n);
targetBufferIndex += n;
}
return new MemoryStream(fileSize, 0, fileSize.Length);
}
catch
{
throw;
}
finally
{
if(null != responseStream) responseStream.Close();
if(null != response) response.Close();
if(null != request) request.Abort();
}
}
Nije važno stići prvi. Važno je prvo da stigneš.