wininet - не понятно
#include "stdafx.h"
#define _AFXDLL
#include <afxinet.h>
#include <Wininet.h>
#define HTTP_UPLOAD_BUFFER_SIZE 1024 * 5
#define HTTP_STATUS_CODE_LENGTH 10000
int _tmain(int argc, _TCHAR* argv[])
{
bool bResult = false;
DWORD dwServerCode = 0;
HINTERNET hInternet = InternetOpen(
_T("Microsoft Internet Explorer"),
0,
0,
0,
0);
if(hInternet)
{ // internet session opened
HINTERNET m_hInternetConn = InternetConnect(hInternet,
_T("localhost"),
INTERNET_DEFAULT_HTTP_PORT,
NULL,
NULL,
INTERNET_SERVICE_HTTP,
INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_KEEP_CONNECTION ,
NULL);
if(m_hInternetConn)
{ // connection created
HINTERNET hInternetReq;
if ( (hInternetReq = HttpOpenRequest(m_hInternetConn,
TEXT("PUT"),
_T("/pool/pool/SMAILIK"),
HTTP_VERSION,
TEXT(""),
NULL,
INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE |
INTERNET_FLAG_KEEP_CONNECTION,
0)) )
{ // request created
HANDLE hFile = CreateFile (_T("D:\\\\temp\\\\Glass.rar"), GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{ // file opened
INTERNET_BUFFERS BufferIn = {0};
BufferIn.dwStructSize = sizeof (INTERNET_BUFFERS);
BufferIn.dwBufferTotal = GetFileSize (hFile, NULL);
if (HttpSendRequestEx(hInternetReq, &BufferIn, NULL, HSR_INITIATE, 0) )
{ // initial succ.
DWORD dwFileSize = GetFileSize (hFile, NULL);
char *pBuffer = new char[HTTP_UPLOAD_BUFFER_SIZE];
while(dwFileSize > 0)
{ // upload
int size = HTTP_UPLOAD_BUFFER_SIZE;
if(dwFileSize < HTTP_UPLOAD_BUFFER_SIZE)
size = dwFileSize;
DWORD dwSize;
if((ReadFile (hFile, pBuffer, size, &dwSize, NULL)))
{ // succ. read
dwFileSize -= size;
DWORD dwSizeWritten = 0;
if(InternetWriteFile(hInternetReq, pBuffer, size, &dwSizeWritten))
{ // succ written to remote server
} // succ written to remote server
else
{
TRACE0("Failed to InternetWriteFile\\n");
}
} // succ. read
else
{
TRACE0("Failed to read from local file\\n");
}
} // upload
TRACE0("File sent!\\n");
delete [] pBuffer;
HttpEndRequest(hInternetReq, NULL, 0, NULL);
DWORD dwCodeSize;
dwCodeSize = sizeof(DWORD);
BOOL bRet = HttpQueryInfo(hInternetReq, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &dwServerCode, &dwCodeSize, NULL);
if(!bRet)
{
TRACE1( "Error on HttpQueryInfo %lu \\n", GetLastError());
}
TRACE1("Server code %ul\\n", dwServerCode);
if(dwServerCode < 400)
bResult = true;
} // initial succ.
else
{
TRACE1("Failed to initiate transfer %i\\n", GetLastError());
}
CloseHandle(hFile);
} // file opened
else
{
TRACE0("Failed to open local file\\n");
}
InternetCloseHandle(hInternetReq);
} // request created
else
{
TRACE1("Failed to HttpOpenRequest\\n", GetLastError());
}
InternetCloseHandle(m_hInternetConn);
} // connection created
else
{
TRACE1("Failed to InternetConnect\\n", GetLastError());
}
InternetCloseHandle(hInternet);
} // internet session opened
else
{
TRACE1("Failed to InternetOpen\\n", GetLastError());
}
return 0;
}