DATASNAP文件传输

在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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值