这里有段代码只能POST文件,有谁能修改成同时POST字段和文件的代码就给分 procedure TForm1.btnGoClick(Sender: TObject); var Source: TMemoryStream; Response: TStringStream; begin // Add the URL to the combo-box. if cbURL.Items.IndexOf(cbURL.Text) = -1 then cbURL.Items.Add(cbURL.Text); Screen.Cursor := crHourGlass; btnStop.Enabled := True; btnGo.Enabled := False; try memoHTML.Clear; // Set the properties for HTTP HTTP.Request.Username := edUsername.Text; HTTP.Request.Password := edPassword.Text; HTTP.Request.ProxyServer := edProxyServer.Text; HTTP.Request.ProxyPort := StrToIntDef(edProxyPort.Text, 80); HTTP.Request.ContentType := edContentType.Text; if cbSSL.Checked then begin HTTP.Intercept := SSL; end else HTTP.Intercept := nil; case cbMethod.ItemIndex of 0: // Head begin HTTP.Head(cbURL.Text); memoHTML.Lines.Add('This is an example of some of the headers returned: '); memoHTML.Lines.Add('---------------------------------------------------'); memoHTML.Lines.Add('Content-Type: ' + HTTP.Response.ContentType); memoHTML.Lines.Add('Date: ' + DatetoStr(HTTP.Response.Date)); memoHTML.Lines.Add(''); memoHTML.Lines.Add('You can view all the headers by examining HTTP.Response'); end; 1: // Get begin memoHTML.Lines.Text := HTTP.Get(cbURL.Text); end; 2: // Post begin Response := TStringStream.Create(''); try if not bPostFile then HTTP.Post(cbURL.Text, mePostData.Lines, Response) else begin Source := TMemoryStream.Create; try Source.LoadFromFile(edPostFile.Text); HTTP.Post(cbURL.Text, Source, Response); finally Source.Free; end; end; memoHTML.Lines.Text := Response.DataString; finally Response.Free; end; end; end; finally Screen.Cursor := crDefault; btnStop.Enabled := False; btnGo.Enabled := True; end; end;
Content-Disposition: form-data; name="file"; filename="C:\Documents and Settings\yzt.SJRJ\桌面\pic269.gif"
Content-Type: image/gifGIF89aX H鈷捼 麝埯?炁萧伌繼牥 !NETSCAPE2.0 !? d , X ` 巇i瀐l刖p,蟭?聢锛?%羆G(嵒 葦 幮?赚矠?沂?
K~`q篐-摕`癮N?衋B弁}鋞uqy{|Ut8C塿俒嘨墜u媽u?l敃泃殯梲煚々uΗ埅璏8痶 ?
? 惖 纒喕4谰?媚2降s筛?闲衣?仟临?苎省锑0庳u骁琛晁砼芍u襅蚣艚<??8P` ?
"\òa羾 !2旇0?8p恞cG?Az$蓳#S@奬iReK?<x繞&M?g婕?濦y
軮翮Pg?傞?M?岼u猆酹织TC !? , X ` 巇i瀐l刖p,蟭?聢锛?%羆G(嵒 葦 幮?赚矠?沂絠吭甔?嚽輌a]0高疸m}逻m<??o8C€w[~u亙o倣p倈妺wn悜?}?嚃爋洕暋牐8湬0 北煢瞡.渤祷 饭@礀籶噶/矛勅炈柷?枷埔4彩ρ?賞胖?遪究K??黻?"耋?赭鲽 ??燗z8p恜aC?!:岠?艐3J躧QcG?<x繞$I?G.??ニ?Y蔦I箦L?G)傜?=侢Jt≦烪?-呼ㄒC !? , X ` 巇i瀐l刖p,蟭?聢锛?%羆G(嵒 葦 幮?赚矠?沂?
K~`q篐-摕`癮N?衋B弁}鋞uqy{|Ut8C塿俒嘨墜u媽u?l敃泃殯梲煚々uΗ? "惇┈?J渤u喍2腐粵怜s究缆撑 巧@眉嵭?矣日0准谯/灼┻?腋″骁¢造3盆芀耱??" ?愢纻*刃`脛:?怉,b詷馼菎9?Iど?G<濼?紝9S&L?o周┏g螣8凃:T( /E$E鶣iS澓搓S玆盧绞5j !? , X ` 巇i瀐l刖p,蟭?聢锛?%羆G(嵒 葦 幮?赚矠?沂絠吭甔?嚽輌a]0高疸m}逻m<??o8C€w[~u亙o倣p倈妺wn悜?}?嚃爋洕暋牐8湬0 北煛?n.?磜挤购0究瞤媚.片杆炍柺?骋w哉(餐≮圮護顿?蒌悸噻纸<耦?"貅???貜 @?*那爜
F勮悽膴3b躼保艔=?壯羶L2欜d藭.Y蕦Iν?g拊欝d ?€旇孝H?试h婴O?潑4 ;
-----------------------------7d32ba26b02f0
Content-Disposition: form-data; name="Submit"提交
-----------------------------7d32ba26b02f0-->>============================================================================
说明:-----------------------------7d32ba26b02f0 <<----------就是用这种隔开的,我也不知道是什么,好像与文件的长度无关
Content-Disposition: form-data; name="file"; filename="C:\Documents and Settings\yzt.SJRJ\桌面\pic053.jpg"
<<--------------Content-Disposition: form-data; <<-----------表单内容
<<--------------name="file"; <<-----------表单字段的名
<<--------------filename="C:\Documents and Settings\yzt.SJRJ\桌面\pic053.jpg" <<----文件名Content-Type: image/pjpeg <<-----------文件类型,记得换行
<<-----------一个空行
<<-----------一文件内容,Bin就行,不用编码
-----------------------------7d32ba26b02f0 <<----------就是用这种隔开的,我也不知道是什么,好像与文件的长度无关
Content-Disposition: form-data; name="Submit" <<-----------表单内容
<<-----------一个空行
提交 <<-----------表单中的Value
-----------------------------7d32ba26b02f0-- <<----------就是用这种隔开的,我也不知道是什么,好像与文件的长度无关,注意,这里最后有两个'-' 附一个ASP的测试程序:
<%
if Request.TotalBytes>0 then
set ado_stream = Server.CreateObject("ADODB.Stream")
ado_stream.Type = 1 ' 1=adTypeBinary
ado_stream.open
ado_stream.Write Request.BinaryRead(-1)
ado_stream.SaveToFile Server.MapPath("/1.dat"),2
end if
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>文件上传</title>
</head><body>
<form name="form1" enctype="multipart/form-data" method="post" action="">
<input type="file" name="file">
<input type="submit" name="Submit" value="提交">
</form>
</body>
</html>
procedure TForm1.btnGoClick(Sender: TObject);
var
Source: TMemoryStream;
Response: TStringStream;
begin
// Add the URL to the combo-box.
if cbURL.Items.IndexOf(cbURL.Text) = -1 then
cbURL.Items.Add(cbURL.Text);
Screen.Cursor := crHourGlass;
btnStop.Enabled := True;
btnGo.Enabled := False;
try
memoHTML.Clear;
// Set the properties for HTTP
HTTP.Request.Username := edUsername.Text;
HTTP.Request.Password := edPassword.Text;
HTTP.Request.ProxyServer := edProxyServer.Text;
HTTP.Request.ProxyPort := StrToIntDef(edProxyPort.Text, 80);
HTTP.Request.ContentType := edContentType.Text;
if cbSSL.Checked then
begin
HTTP.Intercept := SSL;
end
else
HTTP.Intercept := nil;
case cbMethod.ItemIndex of
0: // Head
begin
HTTP.Head(cbURL.Text);
memoHTML.Lines.Add('This is an example of some of the headers returned: ');
memoHTML.Lines.Add('---------------------------------------------------');
memoHTML.Lines.Add('Content-Type: ' + HTTP.Response.ContentType);
memoHTML.Lines.Add('Date: ' + DatetoStr(HTTP.Response.Date));
memoHTML.Lines.Add('');
memoHTML.Lines.Add('You can view all the headers by examining HTTP.Response');
end;
1: // Get
begin
memoHTML.Lines.Text := HTTP.Get(cbURL.Text);
end;
2: // Post
begin
Response := TStringStream.Create('');
try
if not bPostFile then
HTTP.Post(cbURL.Text, mePostData.Lines, Response)
else
begin
Source := TMemoryStream.Create;
try
Source.LoadFromFile(edPostFile.Text);
HTTP.Post(cbURL.Text, Source, Response);
finally
Source.Free;
end;
end;
memoHTML.Lines.Text := Response.DataString;
finally
Response.Free;
end;
end;
end;
finally
Screen.Cursor := crDefault;
btnStop.Enabled := False;
btnGo.Enabled := True;
end;
end;