Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

как отослать данные формы с 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
1-1081178669
$tranger
2004-04-05 19:24
2004.04.25
Шифрование MEMO


1-1081120749
Broot
2004-04-05 03:19
2004.04.25
Генерация кривой


11-1062753303
<Falcon>
2003-09-05 13:15
2004.04.25
Merge в KOLmdvXLGrid - а как навесить на FormOnShow?


14-1080818393
Sergo
2004-04-01 15:19
2004.04.25
Рассылка по доскам объявлений


1-1081257050
olhovik
2004-04-06 17:10
2004.04.25
Как вставить в .ехе