Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Отправка Post (https://forum.antichat.xyz/showthread.php?t=44530)

batR 16.07.2007 01:19

Отправка Post
 
Отправляю файл на php скрипт следующим кодом
Код:

procedure
TForm2.Button2Click(Sender: TObject);
var FileName: string;response: string;
var formData: TIdMultiPartFormDataStream;
begin
FileName := 'c:\pic.gif';
formData := TIdMultiPartFormDataStream.Create;
formData.AddFile('File',fileName,'application/octet-stream');
formData.AddFormField('param1', 'value1');
//HttpObject.Port := Port;
response := idHTTP1.Post('http://myhost/ppost.php',formData);
Label1.Caption:= response ;
Memo1.Lines.Text:= response ;
end;

Можно ли прибабахать сюда индекатор отправки файла, тоесть например через каждую секунду проверять сколько отправилось и выводить это число в label
или через каждый килобыйт обновлять label

Jes 17.07.2007 02:13

Радикальный/самый оптимальный вариант;
sources/indy/idHTTPServer.pas и переписываешь компонент полностью под свои нужды... (потом его перекомпилить не забуть) :P

Algol 17.07.2007 23:08

Создаешь обработчик события OnWork для IdHTTP.

В обработчике выводишь число прочитанных/отосланных байт:

procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
if(AWorkMode=wmWrite) then
label2.Caption := 'Sent: '+intToStr(AWorkCount)+' bytes'
else
label2.Caption := 'Received: '+intToStr(AWorkCount)+' bytes';
Application.ProcessMessages();
end;

KEZ 18.07.2007 04:05

а не проще через обычные socket()'ы ?


Время: 03:48