使用nmhttp上传存在的问题,急!

Bald_eagle 2002-04-25 10:22:14
我想通过delphi编程实现向一个网站bbs上传文件,就是灌水机那样的。
我尝试使用了nmhttp,ics的httpcli,都存在这样的一个问题,上传几次成功后,上传操作就无效了,我刷新目标网页,看不到我上传的文件(前几次是成功的)

听说nmhttp的post存在问题,但是还是可以实现我上传的操作,我现在不明白的是为什么,前几次成功,后来就不行了,而且后来虽然文件没有实际上传上去,但是依然触发了onsuccess事件?

那位大大能帮帮忙,分不够我再补。另外,只要能说明白,或者能实现操作(请详细说明)都给分。

delphi6的indy我也试了,也为是采用堵塞式的,所以不大想用它
...全文
29 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bald_eagle 2002-04-27
  • 打赏
  • 举报
回复
使用的是http协议啊,而且传输的时候还要传递参数的
&username=xxx&passwd=xxx

不过还是十分感谢兄的参与,并且写了这么多代码,我本来都对csdn快绝望了。呵呵^-^
forgot2000 2002-04-26
  • 打赏
  • 举报
回复
为什么用nmhttp呢,用nmftp或NMStrm,NMStrmServ不好吗?
---------------------------------------------------------
(一)用nmstrm,nmstrmserv

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Psock, NMSTRM;

type
TForm1 = class(TForm)
NMStrm1: TNMStrm;
NMStrmServ1: TNMStrmServ;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure NMStrmServ1MSG(Sender: TComponent; const sFrom: String;
strm: TStream);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
MyStream: TMemoryStream;
begin
MyStream:= TMemoryStream.Create;
try
NMStrm1.Host:='127.0.0.1';
MyStream.LoadFromFile('c:\test.exe');
NMStrm1.FromName:='c:\test1.exe'; //发送一个文件名
NMStrm1.PostIt(MyStream);
finally
MyStream.Free;
end;
end;

procedure TForm1.NMStrmServ1MSG(Sender: TComponent; const sFrom: String;
strm: TStream);
var
MyStream: TMemoryStream;
begin
MyStream := TMemoryStream.Create;
MyStream.LoadFromStream(strm);
MyStream.SaveToFile(sFrom);
end;

end.

而且Delphi有自带的一个例子,在Delphi\demo\fastnet\strm目录里就是实现的文件传输。

-----------------------------------------------------------------------
(二)用nmftp

给个通俗的:(ftp客户方用fastnet下的nmftp控件)
nmftp1.Host:=xxx.xxx.xxx.xxx;
nmftp1.port:=21;
nmftp1.Connect;
nmftp1.userid:=xxx;
nmftp1.password:=xxx;
nmftp1.reportlevel:=1;
nmftp1.timeout:=xxxx;
nmftp1.Download(ftp服务器上的文件,存为本地哪个文件); (下载)
nmftp1.Abort;(暂停下载)
nmftp1.Downloadrestore(ftp服务器上的文件,存为本地哪个文件);(下载的断点续传)
nmftp1.upload(xxxxx,xxxxx); (上传)
nmftp1.upload(xxx.xxxx); (上传的断点续传)
如果你想自己做一个ftp服务器,delphi没有自带的控件
可以用ics控件组上的ftpserver控件
Bald_eagle 2002-04-26
  • 打赏
  • 举报
回复
凯萨兄整天在csdn上吗?我是好久没有过来了,对csdn感觉很失望,唉~
兄有联系方式吗,希望以后常联系^^
kesa 2002-04-25
  • 打赏
  • 举报
回复
gz

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧