Upload przez HTTP

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

Upload przez HTTP

Nowy postprzez Mietek » niedziela, 10 sierpnia 2008, 22:36

Witam, przedstawiam poniżej kod, wysyłający plik na serwer przez http:
Kod: Zaznacz cały
BOOL UseHttpSendReqEx(HINTERNET hConnect, TCHAR *upFile)
   {
     static Wininet::INTERNET_BUFFERS BufferIn = {0};
     DWORD dwBytesRead;
     DWORD dwBytesWritten;
     BYTE pBuffer[1024];
     BOOL bRead, bRet;

     BufferIn.dwStructSize = sizeof( Wininet::INTERNET_BUFFERS );

     BufferIn.lpcszHeader   =   _T(" -----------------------------7d23542a1a12c2 Content-Disposition: form-data; name=\"filename\"; filename=\"C:\\155.fet\" Content-Type: multipart/form-data -----------------------------7d21fa22012ca--");   

     BufferIn.dwHeadersLength = strlen(BufferIn.lpcszHeader);
     BufferIn.Next=NULL;

     HINTERNET hRequest = HttpOpenRequest (hConnect, "PUT",
         "/syst.php", NULL, NULL, NULL,  0, 0);
     if (!hRequest)
     {
     ShowMessage("\nFailed to open reqeust.");
       return false;
     }

     HANDLE hFile = CreateFile (upFile, GENERIC_READ, FILE_SHARE_READ,
         NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

    if (hFile == INVALID_HANDLE_VALUE)
     {
       ShowMessage("\nFailed to open local file %s.");
       return false;
     }

     FILE * f = fopen( upFile, "r" );
     fseek( f,0, SEEK_END );
     long size = ftell( f );
     fclose( f );

     BufferIn.dwBufferTotal = size;

     if(!HttpSendRequestEx( hRequest, &BufferIn, NULL, HSR_INITIATE, 0))
     {
       ShowMessage(GetLastError());
       return false;
     }
     DWORD sum = 0;
     do
     {
       if  (!(bRead = ReadFile (hFile, pBuffer, sizeof(pBuffer),
           &dwBytesRead, NULL)))
       {
         ShowMessage("\nReadFile failed on buffer %lu.");
         break;
       }
       if (!(bRet=InternetWriteFile( hRequest, pBuffer, dwBytesRead,
           &dwBytesWritten)))
       {
         ShowMessage("\nInternetWriteFile failed %lu");
         break;
       }
       sum += dwBytesWritten;
     }
     while (dwBytesRead == sizeof(pBuffer)) ;

     CloseHandle (hFile);
     ShowMessage("Actual written bytes: %d\n"+IntToStr(sum));

     if(!HttpEndRequest(hRequest, NULL, 0, 0))
     {
       printf( "Error on HttpEndRequest %lu \n");
       return false;
     }
     return true;
   }

void __fastcall TForm1::Button3Click(TObject *Sender)
{
  HINTERNET   pServer,pSession;
  pSession=InternetOpen("seantest",INTERNET_OPEN_TYPE_PRECONFIG   ,"","",INTERNET_FLAG_ASYNC);
  pServer   = InternetConnect(pSession, "www.afkota.pl", 80, NULL, NULL, INTERNET_SERVICE_HTTP,   INTERNET_FLAG_NO_CACHE_WRITE, 0);
  bool co=UseHttpSendReqEx(pServer,"C:\\155.fet");
}

Wyskakuje mi błąd przy HttpSendRequestEx, na internecie nic zabardzo nie znalazłem jak zaradzić temu problemowi, dlatego zwracam się do was z wielką prośbą o pomoc. Troche mieszałem, więc ten kod może być troche absurdlany. Z góry wielkie dzięki za pomoc.
Avatar użytkownika
Mietek
 
    NieznanyNieznana

Re: Upload przez HTTP

Nowy postprzez wargo » poniedziaÅ‚ek, 11 sierpnia 2008, 10:49

A co to za błąd?
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Upload przez HTTP

Nowy postprzez Mietek » poniedziaÅ‚ek, 11 sierpnia 2008, 11:01

Error 997 czyli ERROR_IO_PENDING
Avatar użytkownika
Mietek
 
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 5 gości

cron