*****求助!如何使用IDHTTP执行含有多个参数的上传操作?*****

leizhen2004 2006-03-27 10:30:06
某些上传页面,往往含有其他必填输入框,这时该如何使用IDHTTP呢?
页面内容如下:
<form name="form1" method="POST" action="/user/fileUpload" ENCTYPE="multipart/form-data">
<table width="90%" height="317" border="0" cellpadding="4" cellspacing="1" class="tablebg">
<tr>
<td class="titlebg" height="30" valign="middle">上载:::</td>
</tr>
<tr class="td01" >
<td width="25%" align="right">用户编号:</td>
<td width="75%" >
<input name="Usernumber" type="text" class="inp06" maxlength="11">
</td>
</tr>
<tr class="td01" >
<td width="25%" align="right">文件名称:</td>
<td width="75%" >
<input name="tonename" type="text" class="inp06" maxlength="100">
</td>
</tr>
<tr bgcolor="E8F2FB">
<td align="right" >选择文件:</td>
<td>
<input name="file2" type="file" SIZE="35">
</td>
</tr>

另外,有些网页有SSL证书,登录时进入安全区,这个过程我用嗅探器就没办法得到包文了。如果我想用idhttp该如何完成登录过程?例子如下:
<form name="frm1" action="https://……:443/admin/login.do" method="post">
<table width="760" border="0" align="center" cellpadding="0" cellspacing="0" background="image_zh/tablebg-01.gif">
<tr>
<td width="266"> </td>
<td width="228" align="left" valign="top"> <table width="100%" border="0" cellpadding="8" cellspacing="0" class="chn">
<tr>
<td width="30%" algin="right"><font style="font-size:12px">用户名:</font></td>
<td width="70%"> <input name="adminid" type="text" maxlength="20" class="inp03" onkeypress="javascript:if (window.event.keyCode==13) { adminpwd.focus(); window.event.keyCode = 0; }">
</td>
</tr>
<tr>
<td algin="right"><font style="font-size:12px">密 码 :</font></td>
<td><input name="adminpwd" type="password" maxlength="20" class="inp03" onkeypress="javascript:if (window.event.keyCode==13) { frm1.submit(); window.event.keyCode = 0; }"></td>
</tr>

在下对网页不是很懂,不知道有没有问到点子上,请各高手指教!
...全文
292 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
leizhen2004 2006-04-06
  • 打赏
  • 举报
回复
继续顶
请众高手帮助
leizhen2004 2006-04-06
  • 打赏
  • 举报
回复
问题依旧 调试状态post这一步只停了1秒钟。而从网页上传的话至少要等待10秒钟。
leizhen2004 2006-04-06
  • 打赏
  • 举报
回复
自己再顶
clasj 2006-04-05
  • 打赏
  • 举报
回复
Stream.AddFile('file2', 'D:\SoundTo\try.wav', 'file');
leizhen2004 2006-04-05
  • 打赏
  • 举报
回复
感谢xzhifei(饭桶超人(最讨厌两种人,一种是有种族歧视的人,一种)
使用Http Analyzer工具,登录的时候抓不到POST信息(打开页面时有证书提示,登录的时候是在安全页面中),不知何故?
leizhen2004 2006-04-05
  • 打赏
  • 举报
回复
感谢xeonfeng(风影)
用你的方法,结果提示错误:
IOHandler value is not valid
不知何故?
leizhen2004 2006-04-05
  • 打赏
  • 举报
回复
感谢 clasj 将你的代码稍做改变,如下:
var
Stream: TIdMultiPartFormDataStream;
begin
Stream:=TIdMultiPartFormDataStream.Create;
try
Stream.AddFormField('Usernumber', '阿三');
Stream.AddFormField('tonename', '1258');
Stream.AddFile('file2', 'D:\SoundTo\try.wav', 'wav/plain');

Stream.Position:=0;

IdHTTP1.Request.ContentType:=Stream.RequestContentType;
IdHTTP1.Post('http://……', Stream);
finally
Stream.Free;
end;
end;

运行后没有提示错误,但是文件没有上传成功,不知何故?
xzhifei 2006-04-04
  • 打赏
  • 举报
回复
首先用Http Analyzer这个工具做一下监控,看看到底需要哪些数据:
1.PostData内容,在提交时的页面数据
2.Request Headers内容,就是设置IdHttp.Request.text
xeonfeng 2006-04-04
  • 打赏
  • 举报
回复
function Logon(UserName, PassWord):boolean;
var
LoginInfo: TStrings;
Response: TStringStream;
i: Integer;
begin
Result :=False;
Response := TStringStream.Create('');
LoginInfo := TStringList.Create;
try
LoginInfo.Clear;
LoginInfo.Add('adminid='+UserName);
LoginInfo.Add('password='+PassWord);
try
IdHTTP1.Post(LoginUrl,LoginInfo,Response);
except
showmessage('登陆失败');
end;
showmessage(Response.DataString);
//返回的页面,你可以判断是否登陆成功
end;
LoginInfo.Free;
Response.Free;
end;
clasj 2006-03-27
  • 打赏
  • 举报
回复
以前测试上传文件的一点东西,希望对你有帮助。。。

program upfile;

{$APPTYPE CONSOLE}

uses
SysUtils, Classes, IdHTTP, IdMultipartFormData;

var
Http: TIdHTTP;
Stream: TIdMultiPartFormDataStream;
begin
Http:=TIdHTTP.Create(nil);
Stream:=TIdMultiPartFormDataStream.Create;
try
Stream.AddFormField('FieldName', 'FieldValue');
Stream.AddFile('FieldName', 'FileName', 'FieldType');
Stream.Position:=0;

Http.Request.ContentType:=Stream.RequestContentType;
Http.Post('http://127.0.0.1', Stream);
finally
Http.Free;
Stream.Free;
end;

ReadLn;
end.
leizhen2004 2006-03-27
  • 打赏
  • 举报
回复
焦急中,在线等!!!!!!!
leizhen2004 2006-03-27
  • 打赏
  • 举报
回复
没人理会,自己再顶一下
leizhen2004 2006-03-27
  • 打赏
  • 举报
回复
自己顶一下

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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