怎么使用ICS的HTTPCLI上传文件?(100分)

  • 主题发起人 主题发起人 superplayboy
  • 开始时间 开始时间
S

superplayboy

Unregistered / Unconfirmed
GUEST, unregistred user!
远程使用ASP接收文件并保存,用HTML文件提交测试过没问题
现在的问题是不知道如何指定上传数据的名称
ms:=tmemorystream.create;
ms.loadfromfile('1.txt');
httpcli1.ContentTypePost:='multipart/form-data';
httpcli1.SendStream:=ms;
httpcli1.url:='http://localhost/upload.asp';
httpcli1.post;
ASP代码:
set upload=new upload_5xSoft
set file1=upload.file("UPLOADFile") '提示这里提交的UPLOADFile为空,缺少对象
file1.saveAs server.mappath('3.txt')
......
我知道是没指定上传名称“UPLOADFile”,但是不知道如何指定上传的数据MS就是UPLOADFile
 
没人答我啊………………
惨啊
 
顶完又顶
 
唉,又是自己解决了,谁把分给回我?
为大家贡献吧,问问题之前把整个大富翁都搜遍了,就是没有关于这个问题的代码,下面
先说说原理:
要使用HTTP控件模仿FORM以multipart/form-data形式上传文件,需要将数据按照指定的格式
写入stream中,然后post出去,具体的格式是什么很多帖子都有介绍,自己搜吧。下面代码演示
了用ICS的HTTPCLI控件把一张JPG图上传到服务器上,服务器用ASP脚本来接收。
==========================
procedure TForm1.Button1Click(Sender: TObject);
const
crlf:string=chr(13)+chr(10);
var
ms,bb:tmemorystream;
buf:string;
begin
ms:=tmemorystream.Create;
bb:=tmemorystream.Create;
bb.LoadFromFile('1.jpg');//文件的数据
bb.Position:=0;
buf:='-----------------------------7d332066021a'+crlf;
buf:=buf+'Content-Disposition: form-data; name="FilePath1"; filename="E:/delphi/a/1.jpg"'+crlf;
buf:=buf+'Content-Type: image/pjpeg'+crlf+crlf;
ms.WriteBuffer(buf[1],length(buf)); //将头部格式写进去
ms.Position:=ms.Size;
ms.CopyFrom(bb,bb.Size);//读入JPG文件数据
buf:=crlf+'-----------------------------7d332066021a'+crlf;//分割符
buf:=buf+'-----------------------------7d332066021a--';//结束符
ms.Position:=ms.Size;
ms.WriteBuffer(buf[1],length(buf));
ms.Position:=0;
http1.ContentTypePost:='multipart/form-data';//指定entype
http1.URL:='http://localhost/u.asp';
http1.SendStream:=ms;
http1.Post;
ms.Free;
bb.Free;
end;
========================
至于要上传多个文件,或者还要上传其它文本信息,则按照分割符分隔开来,具体的格式自己摸索吧。
可以用一个ASP的脚本来观察上传的数据格式,这个脚本只需要一行代码(tmp.asp):
<textarea rows="26" name="S1" cols="153"><%response.Binarywrite Request.BinaryRead(Request.TotalBytes)%></textarea>

需要提醒注意的是,必须严格按照指定的格式去做,差一个字符都不行,我就试过差了一个回车,数据
就是死活不肯上传。
 
看了你的帖子了,不错,可惜我来晚了,我有jsp的方法,就是解析form的提交内容。
 
你是来混分的吧?嘿嘿,不如把分接了再还给我,哈哈哈
 
haha....................
 
后退
顶部