IDHttp.Post 上传文件时无法触发OnWork事件(200分)

  • 主题发起人 主题发起人 juziling
  • 开始时间 开始时间
J

juziling

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟在做一个向网页上传文件的程序时遇到文件上传成功但上传的过程中只能触发第一次OnWork事件,之后程序再也没有触发OnWork知道上传结束。这样无法显示上传进度;(
基本代码如下:
MPFDS := TIdMultiPartFormDataStream.Create ;
MPFDS.AddFormField('Filename',ExtractFileName(FFilePath));
MPFDS.AddFile('Filedata',FFilePath,'');
IdHTTP1.Post('http://upload.xa.ku6.com/up.php?sid=128031231',MPFDS);

procedure TFMain.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Integer);
begin
ProgressBar1.Position := ProgressBar1.Position + AWorkCount;
end;

我后来测试了用Get方法打开网页就能在打开网页的过程中多次触发OnWork事件,实现显示打开进度的功能。
请问Post方法上传能否触发OnWork事件?如果做出上传进度条的效果?
 
请问使用的是什么版本的Indy?如果不是Dev Snapshot版本的话,就可能出现如上所说的问题。因为在非Dev Snapshot版本中,由于IOHandler类的Write方法有错误,导致几乎所有Indy Component都存在类似的问题(例如IdFTP.Put也如此),请尽快更新Indy库,可去官方网站下载Dev Snapshot版本,也可去2ccc.com下载(并非最新的)Snapshot版。
 
我用的是Indy 10.1.5 版
 
请下载10.2.3版试试
 
不好意思还要再请教一个问题,我去2ccc.com下载了Snapshot版。并解决了进度条的问题,但发现OnWorkBegin获得的AWorkCountMax大小,和OnWork中AWorkCount累加的值不一样。AWorkCount累加的值大了7倍左右?请问这是怎么回事?如何解决?
这个问题后我一定给分,谢谢。
 
有 10.2.3 这个版本么?官网上最高只到10.1.5。
10.2.3 在那里可以下载到?
 
那个OnWork可能是被Indy重复触发了,所以造成AWorkCount累加变多。
 
是我写错了;-(
AWorkCount 就是已发送的数据字节数。不用累加的。
 
来自:juziling, 时间:2008-2-19 13:14:47, ID:3873694
有 10.2.3 这个版本么?官网上最高只到10.1.5。
10.2.3 在那里可以下载到?

官网下Develop Snapshot的连接可以下到最新的10.2.3版,不过有个问题就是,这个版本还在开发中,经常会改动的。。。。。如果真用商业开发,建议还是用9比较好。当然也不是说不能用10,只不过建议找一个稳定的时期用上,不出现bug的话,就不要随便换版本就行了。
 
后退
顶部