ASS8.Klient.komunikacja.uploadFile C# (CSharp) Метод

uploadFile() публичный Метод

Wysyła plik na serwer
public uploadFile ( string nazwa, System.DateTime data, int rozmiar ) : int
nazwa string Nazwa pliku
data System.DateTime Data pliku
rozmiar int Rozmiar pliku
Результат int
        public int uploadFile(string nazwa, DateTime data, int rozmiar)
        {
            string katalog = ((folder[folder.Length - 1] == '/') ? folder : folder + "/");
            if (!File.Exists(katalog + nazwa)) return -4;
            try
            {
                StringWriter stringWriter = new StringWriter();
                XmlSerializer xml = new XmlSerializer(typeof(klientUpload));
                klientUpload upload = new klientUpload(sessionID, (int)operacje.wysylanie, nazwa, (long)(data - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds, rozmiar, 0, hashPliku(katalog + nazwa));
                xml.Serialize(stringWriter, upload, names);
                string str = stringWriter.ToString() + endl;
                wyslij(ASCIIEncoding.ASCII.GetBytes(str), str.Length);
            }
            catch (Exception)
            {
                throw new Wyjatki.BladWysylania("Blad podczas wysylania danych na serwer. Sprawdz polaczenie z internetem, oraz ewentualnie ustaw proxy -- wysylanie zapytanie");
            }
            serwerBase odpSerwera = new serwerBase();
            try
            {
                StringReader stringReader = new StringReader("");
                string str = pobierz();
                XmlSerializer xml = new XmlSerializer(typeof(serwerBase));
                odpSerwera = (serwerBase)xml.Deserialize(new StringReader(str));
            }
            catch (Wyjatki.BladOdbierania bo)
            {
                bo.add("-- odpowiedz wgrywanie plikow");
                throw bo;
            }
            catch (Exception)
            {
                throw new Wyjatki.BladParsowania("Dostano bledne dane od serwera lub nastapil blad programu -- odpowiedz wgrywanie plikow");
            }
            if (odpSerwera.operacja != (int)operacje.wysylanie) return -3;
            if (odpSerwera.odp == (int)odpowiedzi.plik_istnieje)
            {
                string odp;
                if (MessageBox.Show("Plik " + nazwa + " istnieje na serwerze, czy zastapic go?", "", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    odp = "ok";
                }
                else
                {
                    odp = "abort";
                }
                try
                {
                    StringWriter stringWriter = new StringWriter();
                    XmlSerializer xml = new XmlSerializer(typeof(klientOdpDownload));
                    klientOdpDownload kod = new klientOdpDownload(sessionID, (int)operacje.wysylanie, odp);
                    xml.Serialize(stringWriter, kod, names);
                    string str = stringWriter.ToString() + endl;
                    wyslij(ASCIIEncoding.ASCII.GetBytes(str), str.Length);
                }
                catch (Exception)
                {
                    throw new Wyjatki.BladWysylania("Blad podczas wysylania danych na serwer. Sprawdz polaczenie z internetem, oraz ewentualnie ustaw proxy -- odpowiedz czy plik zastapic");
                }
                try
                {
                    StringReader stringReader = new StringReader("");
                    string str2 = pobierz();
                    XmlSerializer x = new XmlSerializer(typeof(serwerBase));
                    odpSerwera = (serwerBase)x.Deserialize(new StringReader(str2));
                }
                catch (Wyjatki.BladOdbierania bo)
                {
                    bo.add("-- odpowiedz na zapytanie czy zastapic");
                    throw bo;
                }
                catch (Exception ex)
                {
                    throw new Wyjatki.BladParsowania("Dostano bledne dane od serwera lub nastapil blad programu -- odpowiedz na zapytanie czy zastapic" + ex.ToString());
                }
            }
            if (odpSerwera.operacja != (int)operacje.wysylanie) return -3;
            if (odpSerwera.odp == (int)odpowiedzi.wszystko_ok || odpSerwera.odp == (int)odpowiedzi.plik_nie_istnieje)
            {
                int rozmiarUp = 102400;
                int rozmiarTmp = rozmiar;
                FileStream fileStream = new FileStream(katalog + nazwa, FileMode.Open, FileAccess.Read);
                BinaryReader br = new BinaryReader(fileStream);
                int c = 0;
                try
                {
                    while (rozmiarTmp != 0)
                    {
                        c++;
                        if (rozmiarTmp < rozmiarUp)
                            rozmiarUp = rozmiarTmp;
                        byte[] bytes = br.ReadBytes(rozmiarUp);
                        wyslij(bytes, rozmiarUp);
                        rozmiarTmp -= rozmiarUp;
                        System.Threading.Thread.Sleep(100);
                    }
                }
                catch (Exception)
                {
                    throw new Wyjatki.BladWysylania("Blad podczas wysylania pliku na serwer -- wysylanie pliku");
                }
                finally
                {
                    fileStream.Close();
                }
                fileStream.Close();
                try
                {
                    XmlSerializer xml = new XmlSerializer(typeof(klientHash));
                    klientHash khash = new klientHash(sessionID, (int)operacje.wysylanie, hashPliku(katalog + nazwa));
                    StringWriter sw = new StringWriter();
                    xml.Serialize(sw, khash, names);
                    string str = sw.ToString() + endl;
                    wyslij(ASCIIEncoding.ASCII.GetBytes(str), str.Length);
                }
                catch (Exception)
                {
                    throw new Wyjatki.BladWysylania("Blad podczas wysylania pliku na serwer -- wysylanie hasha");
                }
            }
            return odpSerwera.odp;
        }