В общем такой вопрос, надо скрипту отправить файл на WinInet (именно через WinInet)
Я использую функцию:
Код:
procedure SendPOSTData(const szHost, szPath, szData,header: PChar);
var
szHeaders: PChar;
hOpenHandle,
hConnectHandle,
hResourceHandle: Pointer;
ListBox1:tListBox;
begin
hOpenHandle := InternetOpen(nil, 0, nil, nil, 0);
if hOpenHandle <> nil then
begin
hConnectHandle := InternetConnect(hOpenHandle, szHost,80,nil,nil,3,0,0);
if hConnectHandle <> nil then
begin
hResourceHandle := HttpOpenRequest(hConnectHandle,'POST',szPath,nil,nil,nil,INTERNET_FLAG_KEEP_CONNECTION,0);
if hResourceHandle <> nil then
begin
HttpSendRequest(hResourceHandle,header,47,szData,lstrlen(szData));
end;
InternetCloseHandle(hResourceHandle);
end;
InternetCloseHandle(hConnectHandle);
end;
InternetCloseHandle(hOpenHandle);
end;
То есть первый параметр это хост, второй это путь до скрипта, третий это POST дата, а четвёртый это заголовок.
Вызываю функцию так:
SendPOSTData('site.fr','/index.php',PChar(memo1.text),PChar(memo2.text));
А теперь самое интересное, в memo2 я вставляю заголовок:
Код:
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------235351862919679
Ну а в POST (memo1) я вставляю это:
Код:
-----------------------------235351862919679
Content-Disposition: form-data; name="userfile"; filename="test.txt"
Content-Type: text/plain
LOL
-----------------------------235351862919679--
В итоге файл не заливается.
name="userfile"; указанно правильно (на скрипте так приём файла обозначен).
Вроде бы в коде всё правильно, заголовки и POST дату я указал так как нужно, величину контента функция потсчитывает автоматом.
Подскажите плиз где тут ошибка? Может я что то забыл указать в заголовке или POST запросе?