[C++] Wysyłanie pliku na serwer przez HTTP

beamer

Użytkownik
Dołączył
Maj 22, 2004
Posty
144
Witam.

Jak w temacie - mam problem z wysyłaniem pliku na serwer. Przez FTP mi ładnie leci jednak mam problem z FW i dlatego kombinuję z HTTP (ewentualnie może ktoś podpowiedzieć jak obejść FW NODA32 przy FTP).

Mam wrażenie, że problem jest w nagłówkach jednak od kilku nocy kombinuję najróżniejsze kombinacje i nic mi nie wychodzi... korzystam z kodu znalezionego w sieci. Oto jego część z moimi modyfikacjami:


Kod:
  HINTERNET hIntrn = InternetOpen("Mozilla", 
                                  INTERNET_OPEN_TYPE_PRECONFIG,
                                  NULL,
                                  NULL,
                                  0);

  HINTERNET hConn = InternetConnect( hIntrn, 
                                    "xxx.ugu.pl",
                                    INTERNET_DEFAULT_HTTP_PORT,
                                    NULL,
                                    NULL,
                                    INTERNET_SERVICE_HTTP,
                                    0,
                                    0);

  HINTERNET hReq = HttpOpenRequest(hConn,
                                  "POST",
                                  "/upload.php",
                                  "HTTP/1.1",
                                  NULL,
                                  NULL,
                                  0,
                                  0);


  char strContentHeader[] = "User-Agent: Mozilla\r\n"
                            "Host: xxx.ugu.pl\r\n"
                            "Cache-Control: no-cache\r\n"
                            "Content-Disposition: form-data; name=\"file\"; filename=\"xxx.rar\"\r\n"
                            "Content-Type: application/rar\r\n\r\n";

  
  HttpAddRequestHeaders(hReq, strContentHeader, sizeof(strContentHeader), HTTP_ADDREQ_FLAG_ADD);
 
 
//
//   tu wczytuję plik do zmiennej typu char * buffer o długości typu long lSize
//


  if (!HttpSendRequest(hReq, NULL, 0, buffer, lSize))
   MessageBox(NULL,"BŁĄD 1","Info",MB_OK|MB_ICONINFORMATION);
 
  if(!HttpEndRequest(hReq, NULL, 0, 0))
   MessageBox(NULL,"BŁĄD 2","Info",MB_OK|MB_ICONINFORMATION);


Niby nagłówki są wysyłane a po nich zawartość pliku do ostatniego znaku, serwer odpowiada OK (200) i na tym koniec
<
Kombinowałem też z multipart/form-data ale wtedy mam problem między innymi z wysłaniem ogranicznika po zakończeniu pliku...

Dodam, że korzystam z Dev-C++ a skrypt PHP ładnie śmiga jeżeli przesyłam do niego dane poprzez przeglądarkę.

Jeżeli ma ktoś jakieś pomysły/propozycje/sugestie to proszę o zabranie "głosu" a jeżeli podałem za mało informacji to krzyczeć...

Pozdrawiam
 

grzonu

Były Moderator
Dołączył
Grudzień 26, 2006
Posty
1390
jedyny sposob na obejscie FW noda to injekcja dll`ki/kodu do procesu ktory ma pozwolenie na wysylanie na ftp i z tamtad wyslac.
Mozesz probowac jeszcze uzyc TDI / NDIS czy nod monitoruje NDIS`a
 

beamer

Użytkownik
Dołączył
Maj 22, 2004
Posty
144
Ok, dzięki za naprowadzenie ale może jednak ktoś wie jak coś wysłać powyższym sposobem?
<
 
Do góry Bottom