Форум: "Сети";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Внизкак отослать данные формы с ENCTYPE=multipart/form-data Найти похожие ветки
← →
sergeport (2004-02-18 21:28) [0]подскажите, плз. мне нужно передать данные perl-скрипту методом пост, а именно: данные формы с ENCTYPE=multipart/form-data. т.е. надо передать файл для загрузки (тэг <input type="file" name="file_to_load">). пробовал юзать компонент TNMHTTP - не вышло, он по-моему ваще глючит с POST-запросами :(
я сам программирую на жабе, но вот появилась необходимость написать клиентскую часть именно на делфях... а тут я ноль :)
буду очень признателен за любой совет.
пишу на D6
← →
Reindeer Moss Eater © (2004-02-19 09:10) [1]Соединяешься с web сервером.
Формируешь заголовок POST, задаешь boundaries и содержимое параметров.
Отслылаешь все это несколькими Writeln;
Завершаешь еще одним пустым Writeln.
Далее пересылаешь двоичные данные файла.
Когда они закончились отправляешь boundary + "--"
Все.
← →
sergeport (2004-02-19 11:34) [2]а какой компонент надо использовать? можно подробнее, плз?
← →
Reindeer Moss Eater © (2004-02-19 11:46) [3]Какого надо тебе - не знаю.
Можно использовать любого TCP клиента
← →
sergeport (2004-02-21 01:10) [4]сорри за назойливость. а можно привести какой-нить прииер? буду очень признателен :)
← →
sergeport (2004-02-21 12:20) [5]сенкс, я уже сам допер. сделал через TTCPClient
procedure TmainForm.sendFormButtonClick(Sender: TObject);
var
fileName, postData, firstReceived : String;
stream : TFileStream;
buf : Char;
i : Integer;
begin
// tcpC - TTCPClient
tcpC.Sendln("POST /cgi-bin/upload.cgi HTTP/1.1");
tcpC.Sendln("Content-Type: application/x-www-form-urlencoded; boundary=---------------------------7d4245307104b0");
tcpC.Sendln("Host: myhost.com");
postData := "login=mylogin&password=mypassword&uploadedfile=FULL_PATH_TO_FILE";
tcpC.Sendln("Content-Length: "+ inttostr(length(postData)));
tcpC.Sendln("");
tcpC.Sendln(postData);
tcpC.Sendln("");
fileName := "FULL_PATH_TO_FILE";
try
stream := TFileStream.Create(fileName, fmOpenReadWrite);
tcpC.SendStream(stream);
for i := 0 to stream.Size - 1 do
begin
Stream.Seek(i,soFromBeginning);
stream.Read(buf,1);
tcpC.SendBuf(buf,1);
end;
finally
stream.Free;
end;
tcpC.Sendln("---------------------------7d4245307104b0");
firstReceived := tcpC.Receiveln();
end;
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c