灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:8011回复:0

datasnap传输流/文件问题

楼主#
更多 发布于:2012-09-08 13:06


我在datasnap服务器里面定义了方法:
procedure UpdateDoc(ItemID : integer; doc : TStream);
客户端

AServerMethods_PublicClient := TServerMethods_PublicClient.Create(DM_Client.SQLConnection1.DBXConnection);
  ItemText := TMemoryStream.Create;
  try
    ItemText.LoadFromFile('E:\private\ksxt\Source\Client\Win32\Debug\blank.rtf');
    ItemText.Position := 0;
    ShowMessage('ItemText.Size := ' + IntToStr(ItemText.Size));
    AServerMethods_PublicClient.UpdateDoc(6, ItemText);
  finally
    ItemText.Free;
    AServerMethods_PublicClient.Free;
  end;

但是服务器接收到的doc的size始终为-1,无法得到流。
后使用TJSONArray进行转换,可以实现。
服务器这样写

procedure TServerMethods_Public.UpLoadFile(ADoc: TJSONArray);
var
  ADBXJSONTools : TDBXJSONTools;
  AData : TMemoryStream;
begin
  AData := TMemoryStream.Create;
  try
    AData := ADBXJSONTools.JSONToStream(ADoc) as TMemoryStream;
    ShowMessage(IntToStr(AData.Size));
    AData.SaveToFile('123.rtf');
  finally
    Adata.Free;
  end;
end;

客户端这样写
ItemText.LoadFromFile('E:\private\ksxt\Source\Client\Win32\Debug\blank.rtf');
    ItemText.Position := 0;
    ShowMessage('ItemText.Size := ' + IntToStr(ItemText.Size));
    ADoc := ADBXJSONTools.StreamToJSON(ItemText, 0, ItemText.Size);
    AServerMethods_PublicClient.UpLoadFile(ADoc);


喜欢0 评分0
游客

返回顶部