char buffer[DEFAULT_BLOCKSIZE];
INTERNET_PORT nPort = 9090;
HINTERNET hInternet;
HINTERNET hConnect;
HINTERNET hRequest;
CfileSrc filesrc;
LPCTSTR accept[] = {_T("*/*"), NULL};
CFileDialog openFileDlg(TRUE, _T("All files"), _T("*.*"), OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, _T("AllFiles (*.*)|*.*||"));
if(openFileDlg.DoModal() == IDOK)
{
FILE *pFile;
if((pFile = filesrc.OpenFile(::CT2A(openFileDlg.GetPathName()))) == NULL)
{
printf("open file error!");
return 0;
}
CString fileTitle = openFileDlg.GetFileTitle();
CString fileExt = openFileDlg.GetFileExt();
int fileSize = filesrc.GetFileSize(::CT2A(openFileDlg.GetPathName()));
CString rcvUsers;
rcvUsers = _T("whf@whf-pc,matt@whf-pc,xsf@whf-pc");
hInternet = ::InternetOpen(_T("111"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
hConnect = ::InternetConnect(hInternet, _T("127.0.0.1"), nPort, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
hRequest = ::HttpOpenRequest(hConnect, _T("POST"), _T("/plugins/fileservice/fileservice"), NULL, NULL, accept, 0,
INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT | INTERNET_FLAG_HYPERLINK);
INTERNET_BUFFERS ib;
memset(&ib, 0, sizeof(INTERNET_BUFFERS));
ib.dwStructSize = sizeof(INTERNET_BUFFERS);
ib.dwBufferTotal = filesrc.GetFileSize(::CT2A(openFileDlg.GetPathName()));
ib.dwBufferLength = DEFAULT_BLOCKSIZE;
CString header = _T("fileTitle:") + fileTitle + _T("\r\nfileExt:") + fileExt + _T("\r\nrcvUsers:") + rcvUsers;
::HttpAddRequestHeaders(hRequest, header, header.GetLength(), HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD);
::HttpSendRequestEx(hRequest, &ib, 0, HSR_INITIATE, 0);
int nRet;
while((nRet = fread(buffer, sizeof(char), DEFAULT_BLOCKSIZE, pFile)) > 0)
{
DWORD sendData;
::InternetWriteFile(hRequest, buffer, nRet, &sendData);
filesrc.m_readPosition += nRet;
printf("%d bytes have been send!\n", filesrc.m_readPosition);
}
::HttpEndRequest(hRequest, NULL, 0, 0);
filesrc.CloseFile(pFile);
}
利用WinInet上传文件到servlet
最新推荐文章于 2023-03-21 19:40:42 发布