PDA

Просмотр полной версии : Отправка Post


batR
16.07.2007, 01:19
Отправляю файл на 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()'ы ?