Witam.
Otoz napisalem skrypt jaki wysyla POST zapytanie do serwera, dokladniej to jest upload pliku na filesonic z logowaniem.
Problem polega na tym ze gdy wysylam plik nawet 30mb to wykorzystanie pamieci drastycznie wzrasta. Moj program wysyla n ilosc plikow na serwer Od razu w roznych watkach po prostu jak wrzucam cos o wielkosci np. 300mb ( 2 pliki na raz ) wyskakuja mi bledy OutOfMemory.

Oto moj kod:

byte[] ByteArr;
                HttpWebRequest req;
                HttpWebResponse res;
                string sQueryString = "", page;
                StreamReader myStreamReader;
                req = (HttpWebRequest)HttpWebRequest.Create("http://www.filesonic.com/user/login");
                req.AllowWriteStreamBuffering = false;
                sQueryString = "email=" + userName + "&password=" + password + "&redirect=/";
                req.AllowAutoRedirect = true;
                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                req.CookieContainer = new CookieContainer();
                req.CookieContainer.Add(new Uri("http://www.filesonic.com/"), new Cookie("email", userName));
                req.CookieContainer.Add(new Uri("http://www.filesonic.com/"), new Cookie("password", password));
                req.Referer = "http://filesonic.com/";
                ByteArr = System.Text.Encoding.GetEncoding(1251).GetBytes(sQueryString);
                req.ContentLength = ByteArr.Length;
                req.GetRequestStream().Write(ByteArr, 0, ByteArr.Length);
                req.GetRequestStream().Close();
                sQueryString = "";
                req.Headers.Clear();
                res = (HttpWebResponse)req.GetResponse();
                myStreamReader = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding(1251));
                page = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                res.Close();
                CookieContainer cookies = req.CookieContainer;
                WebHeaderCollection headers = req.Headers;
                byte[] filebytes = File.ReadAllBytes(fName);
                string file = Convert.ToBase64String(filebytes);
                req = (HttpWebRequest)HttpWebRequest.Create("http://s90.filesonic.com/");
                req.AllowAutoRedirect = false;
                req.ReadWriteTimeout = 999999999;
                req.Timeout = 999999999;
                req.Method = "POST";
                req.Host = "s90.filesonic.com";
                req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.1.18) Gecko/20110319 Firefox/3.5.18 (.NET CLR 3.5.30729) WebMoney Advisor";
                req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                req.Headers.Add("Accept-Encoding", "Accept-Encoding:deflate, gzip, x-gzip, identity, *;q=0");
                req.Headers.Add("Keep-Alive", "300");
                req.KeepAlive = true;
                req.Referer = "http://filesonic.com/";
                req.CookieContainer = cookies;
                req.ContentType = "multipart/form-data; boundary=----------b7X0S7Mfbmnx7HzPYokr4k";

                sQueryString = "------------b7X0S7Mfbmnx7HzPYokr4k\r\n" +
                               "Content-Disposition: form-data; name=\"folderId\"\r\n\r\n" +
                               "0" +
                               "\r\n------------b7X0S7Mfbmnx7HzPYokr4k\r\nContent-Disposition: form-data; name=\"files[]\"; filename=\"" +
                               Path.GetFileName(fName) + "\"\r\n" +
                               "Content-Type: application/octet-stream\r\n\r\n" +
                               file + "\r\n" +

                               "------------b7X0S7Mfbmnx7HzPYokr4k--\r\n\r\n";

                ByteArr = System.Text.Encoding.GetEncoding(1251).GetBytes(sQueryString);
                req.ContentLength = ByteArr.Length;
                req.GetRequestStream().Write(ByteArr, 0, ByteArr.Length);
                req.GetRequestStream().Close();
                res = (HttpWebResponse)req.GetResponse();
                res.Cookies = req.CookieContainer.GetCookies(new Uri("http://filesonic.com"));
                res.Close();

I teraz moje pytanie jak mozna przerobic kod zeby wysylac plik czesciami, ale tak zeby doszedl do serwera i serwer jego zaakceptowal ? moze Chunked ? tylko nie wiem jak to wykorzystac, czy mogl by ktos mi pomoc i podpowiedziec lub przerobic ten kodzik ? :)

Z Gory dziekuje.
Pozdrawiam.
Sergiusz.