使用wse(Web Services Enhancements )把服务器端的文件传到客户端

王朝asp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

比如说,现在站点A有个附件想传给站点B,我们就可以用WSE来传。

在服务器端的webservice文件service1.asmx中写入webmethod:

这个是取附件的方法:

[WebMethod]

public void GetAttachment()

{

// 获取 SoapContext 作为响应消息

SoapContext myContext = HttpSoapContext.ResponseContext;

// 字符串,表示附件的文件名和路径。

string filePath = @"C:\My Documents\1.txt";

// 使用文件名来创建新的 DIME 附件,

// 并通过 MIME 媒体类型

// 来指定附件编码。

DimeAttachment dimeImage = new DimeAttachment(

"text/xml", TypeFormatEnum.MediaType,

filePath);

// 指定给 DIME 记录的 ID 属性。

dimeImage.Id = "1.txt";

// 将新的 DimeAttachment 对象添加到 SoapContext 对象中。

myContext.Attachments.Add(dimeImage);

}

在客户端的web站点下载附件,并写入到新的文件中:

private void DownAttachment()

{

//Service1WSE : Microsoft.Web.Services.WebServicesClientProtocol 这里的Service1继承WSE 中的类

Service1WSE sw=new Service1WSE();

//从webservice中获取附件

sw.GetAttachment();

//得到附件的流

Stream str=sw.ResponseSoapContext.Attachments[0].Stream;

int length=(int)str.Length;

byte[] attData=new byte[length];

//把附件的流写入byte中

str.Read(attData,0,length);

//创建新文件

FileInfo fi=new FileInfo(@"c:\"+sw.ResponseSoapContext.Attachments[0].Id);

FileStream fs=fi.Create();

//把byte写入新文件中

fs.Write(attData,0,length);

fs.Flush();

fs.Close();

}

注意:在webservice站点和客户端website站点的web.config中system.web节下加:

<webServices>

<soapExtensionTypes>

<add type="Microsoft.Web.Services.WebServicesExtension, Microsoft.Web.Services, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" priority="1" group="0" />

</soapExtensionTypes>

</webServices>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航