• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
《储备驿站》



                           淡泊以明志,宁静而志远!
博客园    首页    新随笔    联系   管理    订阅  订阅
使用wse(Web Services Enhancements )把服务器端的文件传到客户端

(转载博客园)

比如说,现在站点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>

posted on 2005-11-03 12:42  Dansin  阅读(223)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3