BOOL UseHttpSendReqEx(HINTERNET hConnect, TCHAR *upFile, TCHAR *localFile)
{
INTERNET_BUFFERS BufferIn = { 0 };
DWORD dwBytesRead;
DWORD dwBytesWritten;
BYTE pBuffer[302480]; // Read from file in 300M chunks,最大支持300M檔案
BOOL bRead, bRet;
BufferIn.dwStructSize = sizeof(INTERNET_BUFFERS);
//使用put方式上傳檔案:
aa:
HINTERNET hRequest = HttpOpenRequest(hConnect, "PUT",
localFile, "HTTP/1.1", NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
if (!hRequest)
{
printf("Failed to open request handle: %lu/n", GetLastError());
return FALSE;
}
//打開指定的檔案:
HANDLE hFile = CreateFile(upFile, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
printf("/nFailed to open local file %s.", upFile);
return FALSE;
}
BufferIn.dwBufferTotal = GetFileSize(hFile, NULL);
printf("File size is %d/n", BufferIn.dwBufferTotal);
if (!HttpSendRequestEx(hRequest, &BufferIn, NULL, HSR_INITIATE, 0))
{
printf("Error on HttpSendRequestEx %lu/n", GetLastError());
return FALSE;
}
DWORD sum = 0;
do
{
if (!(bRead = ReadFile(hFile, pBuffer, sizeof(pBuffer), &dwBytesRead, NULL)))
{
printf("/nReadFile failed on buffer %lu.", GetLastError());
break;
}
if (!(bRet = InternetWriteFile(hRequest, pBuffer, dwBytesRead, &dwBytesWritten)))
{
printf("/nInternetWriteFile failed %lu", GetLastError());
break;
}
sum += dwBytesWritten;
} while (dwBytesRead == sizeof(pBuffer));
CloseHandle(hFile);
printf("Actual written bytes: %d/nupload %s successed!/n", sum, localFile);
//結束一個HTTP請求:
if (!HttpEndRequest(hRequest, NULL, 0, 0))
{
if (ERROR_INTERNET_FORCE_RETRY == GetLastError())
goto aa;
}
//if (!)
//{
// char error[256] = { 0 };
// printf("Error on HttpEndRequest %lu /n", );
// // return FALSE;
//}
return TRUE;
}
做HTTP 上傳檔案post,代碼是從網上下載,一測驗總是在HttpEndRequest返錯ERROR_INTERNET_FORCE_RETRY(必須再次運行該操作),請問是什么原因。這段代碼發帖的人說好用的。
uj5u.com熱心網友回復:
http://www.cnblogs.com/huqingyu/archive/2009/03/04/1403472.html ?uj5u.com熱心網友回復:
https://www.codeproject.com/Articles/3849/Simple-HTTP-Client-using-WININET轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/105204.html
標籤:網絡編程
