首先编写 http://127.0.0.1:1001/WebService1/Service1.asmx 服务加入如下代码:
[WebMethod(Description="Web UpFile")]
public string UploadFile(byte[] fs,string FileName)
{
try
{
///定义并实例化一个内存流,以存放提交上来的字节数组。
MemoryStream m = new MemoryStream(fs);
///定义实际文件对象,保存上载的文件。
FileStream f = new FileStream(Server.MapPath(".") + "//"+ FileName, FileMode.Create);
///把内内存里的数据写入物理文件
m.WriteTo(f);
m.Close();
f.Close();
f = null;
m = null;
return "文件已经上传成功。";
}
catch(Exception ex)
{
return ex.Message;
}
}
编译过 就生成web service
在IE地址内输入http://127.0.0.1:1001/WebService1/Service1.asmx?wsdl获得wsdl代码 并保存成a.wsdl文件
运行delphi
File->new->Other->web service->wsdl importer 选择刚才生成a.wsd选下一步 即可生成借口代码文件IWebServer.pas
修改IWebServer.pas defWSDL值 改为 http://127.0.0.1:1001/WebService1/Service1.asmx?Wsdl
在delphi内新建立项目 在web service下选择HTTPRIO组件
设置HTTPRIO1.converter.options.soUTF8inHeader := True
HTTPRIO1.httpwebnode.useUTF8inHeader := True
在代码中输入
procedure TForm1.Button1Click(Sender: TObject);
var
WS: Service1Soap;
FT: TFileStream;
Bs: TByteDynArray;
begin
FT:= TFileStream.Create('c:/a,.doc',fmOpenRead );
SetLength(bs,Ft.Size);
Ft.Position:=0;
Ft.Read(Pointer(bs)^,Ft.Size);
WS:= HTTPRIO1 as Service1Soap;
WS.UploadFile(bs,'aa.doc');
end;
需要在uses处加入Types,IWebServer但愿
并且需要修改HTTPRIO1的url属性为 http://127.0.0.1:1001/WebService1/Service1.asmx?Wsdl
F9 即可实现C向服务方传送文件的功能