您的位置:首页 > 其它

datasnap传输流/文件问题

2012-04-09 11:37 169 查看
我在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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: