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;
}