通过Remoting service上传文件

2016-02-19 19:01 3 1 收藏

今天图老师小编给大家精心推荐个通过Remoting service上传文件教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~

【 tulaoshi.com - Web开发 】

  最近在因为在学习Remoting,纯粹只是了解一下,发现Remoting确实是好东西。

  我们通常有三种方式来使用remoting,一种是

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

  第一种:Publishing a public object
  公开的对象创建在本地
  第二种:Remote creation of a public object (SAO)
  对象创建在客户端请求中
  第三种:Remote creation of a private object (CAO)
  对象创建在HOST上,客户端引用服务器上的对象

  目次我也没有很好理解这三种的本质区别在哪里。而这三种方式的remoting创建方式也不相同。

  第一种方式
  Host:
  ChannelServices.RegisterChannel (new TcpChannel(1500));
  cTransfer Trans = new cTransfer();
  RemotingServices.Marshal (Trans, "TestService");Client:
  cTransfer T = (cTransfer) Activator.GetObject(typeof(cTransfer),
                                   "tcp://host:1500/TestService");
  第二种方式
  Host:
  ChannelServices.RegisterChannel (new TcpChannel(1500));
  RemotingConfiguration.RegisterWellKnownServiceType(typeof(cTransfer),
      "TestService", WellKnownObjectMode.Singleton);Client:
  cTransfer T = (cTransfer) Activator.GetObject(typeof(cTransfer),
                                   "tcp://host:1500/TestService");
  第三种方式
  Host:
  ChannelServices.RegisterChannel (new TcpChannel(1500));
  RemotingConfiguration.RegisterActivatedServiceType(typeof(cTransfer));Client:
  object[] attr = {new UrlAttribute("tcp://host:1500")};
  object[] args = {"Sample constructor argument"};
  cTransfer T = (cTransfer) Activator.CreateInstance(typeof(cTransfer), args, attr);
  如果我们需要一个对象(object)允许远程调用处理,那么这个对象(object)需要继承于MarshalByRefObject这个类。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

  如何在remoting中传送文件呢?基本思路就是在client打开client的文件,转换在Byte[]类型之后调用host的对象。
  Client与Host之间传送的对象
  [Serializable]
      public struct kAction
      {
          public string filename;
          public byte[] context;       
         
      };打开文件,将流字节保存到Context中去
  Stream  fileStream=File.Open(this.transFileName.Text,FileMode.Open);
              fileStream.Position=0;
              byte[] Content = new byte[((int) fileStream.Length) + 1];
              fileStream.Read(Content,0,Content.Length) ;
  在Host在读取到Kaction之后,把它保存到指定文件夹下面
  MemoryStream meoeryStream=new MemoryStream(k_Action.context);
              FileStream fileStream=new FileStream(@"d:"+k_Action.filename,FileMode.Create);
              meoeryStream.WriteTo(fileStream);
              fileStream.Close();
              meoeryStream.Close();           
  发现不能在对象中又定义新的对象。在准备发送到HOST上会提示“包含潜在危险的类型”。
  [Serializable]
      public struct kAction
      {
          public string filename;
          public byte[] context;
                  public FineInfo fileInfo;//这里

      };
  记录一下自己的心得。有空我会好好整理下下回做篇完整点的。

  cnzc's blogs

来源:https://www.tulaoshi.com/n/20160219/1619810.html

延伸阅读
标签: Java JAVA基础
JavaBean是一种基于Java的软件组件。JSP对于在Web 应用中集成JavaBean组件提供了完善的支持。这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为JSP应用带来了更多的可伸缩性。 文件的上传功能在基于B/S的开发模式中非常普遍。同其他开发工具相比较,JSP对文件的上传支持并不是...
标签: Java JAVA基础
  如果你曾用VB编写文件上传的组件的话,那么用JAVA编写文件上传的JAVABEAN十分容易。 下面的例子只是一个简版 package yuanyifileup; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.PageContext; public class yuanyifileup { private ServletReque...
如何上传文件至彩云?   上传支持两种方式: ① 支持拖曳方式将本地文件(夹)拖进彩云PC客户端我的文件里面。 ② 通过在本地浏览窗口复制后,粘贴至我的文件路径下。
标签: ASP
  How Do I Upload Files to the database with SAFileUp?   Don't do it! Use SAFileUp to upload the files to the server but do not store the image in the database. Instead store the path to the file. Better yet if the images will sit in the same folder just store the actual file name. Uploading the entire ...
标签: Web开发
实际上在用PHP上传文件时。。。只能用$_FILES形式,但是若我们只是单一的用JS方式取其ID,如input id='img' type='file'..document.getElementById('img').value或者jquery形式的$("#img")都是不能正真实际上传的(但是还是有很多人这样做,刚开始时我也是)。 可是功能上又要要求实现所谓的“异步上传”,怎么办呢??只能借助于第三方的组件...

经验教程

483

收藏

90
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部