у меня некоторые коды работают
Первые части заголовка:
static char hdrs[] = "Content-Type: multipart/form-data; boundary=AaB03x";
static char head[] = "--AaB03x\r\n"
"Content-Disposition: form-data; name=\"userfile\"; filename=\"test.bin\"\r\n"
"Content-Type: application/octet-stream\r\n"
"\r\n";
static char tail[] = "\r\n"
"--AaB03x--\r\n";
и основные коды ниже ... чаще всего между отправкой head[]
и tail[]
вам send(write)
данных.
Я удалил проверку ошибок и коды с InternetOpen()
до HttpOpenRequest()
, поскольку они были известны в других WinINet
примерах:
...call InternetOpen...
...call InternetConnect...
...call HttpOpenRequest...
// your binary data
char data[] = "\x01\x02\x03\x04.....
DWORD dataSize = ...
// prepare headers
HttpAddRequestHeaders(hRequest,
hdrs, -1,
HTTP_ADDREQ_FLAG_REPLACE |
HTTP_ADDREQ_FLAG_ADD);
// send the specified request to the HTTP server and allows chunked transfers
INTERNET_BUFFERS bufferIn;
memset(&bufferIn, 0, sizeof(INTERNET_BUFFERS));
bufferIn.dwStructSize = sizeof(INTERNET_BUFFERS);
bufferIn.dwBufferTotal = strlen(head) + dataSize + strlen(tail);
HttpSendRequestEx(hRequest, &bufferIn, NULL, HSR_INITIATE, 0);
// write data to an open Internet file
// 1. stream header
InternetWriteFile(hRequest, (const void*)head, strlen(head), &bytesWritten);
// 2. stream contents (binary data)
InternetWriteFile(hRequest, (const void*)data, dataSize, &bytesWritten);
// or a while loop for call InternetWriteFile every 1024 bytes...
// 3. stream tailer
InternetWriteFile(hRequest, (const void*)tail, strlen(tail), &bytesWritten);
// end a HTTP request (initiated by HttpSendRequestEx)
HttpEndRequest(hRequest, NULL, HSR_INITIATE, 0);
О кодах php для получения 'userfile', пожалуйста, обратитесь к примеру php Пример # 2 Проверка загрузки файлов
Надеюсь, это поможет