您的位置:首页 > 编程语言 > Delphi

Delphi Xe DataSnap Rest + Flex 开发 基本探索4(返回字节流 stream)

2014-09-04 15:45 471 查看
在看本文章前,请参考前面的 部分代码和介绍

从后台取字节流 stream 返回到前台 应该是一个比较重要的数据交互过程,比如前台需要从后台加载一个图片

后台代码

function TSMTest.GetStream: TStream;
var
fstream:TmemoryStream;
buf:TByteArray;
I: Integer;
begin
stream:=TFileStream.Create('browser.png',fmOpenRead);//后台的一个图片
fstream := Tmemorystream.Create;
fstream.LoadFromStream(stream);
//stream := fstream;
result := fstream;
end;


前台的效果图

(md 图片上传不了)



前台代码

 private var stream:URLStream = new URLStream();
private var bytes:ByteArray  = new ByteArray();
protected function btnstream_clickHandler(event:MouseEvent):void
{
var downLoadURL:URLRequest = new URLRequest();
downLoadURL.url = "http://localhost:8080/datasnap/rest/TSMTest/GetStream";
stream.addEventListener(Event.COMPLETE, onLoadComplete);
stream.load(downLoadURL);
}
public function onLoadComplete(event:Event):void{

if (stream.connected)
{
var b:int;
try {
do {
b = stream.readByte();
bytes.writeByte(b);
} while (true);
} catch (e:EOFError) {
//Alert.show(bytes.length.toString());
}
}
var bmp:Loader = new Loader();
bmp.loadBytes(bytes);

//	bmp.width = imgpng.width;
//	bmp.height= imgpng.height;
imgpng.addChild(bmp);
}


注意这里我是直接返回的delphi的Tstream类 实际上 可以返回 TJsonArray 对象

function TSMTest.GetJsonStream: TJSONArray;
var
fstream:TFileStream;
I: Integer;
Mar: TJSONMarshal; //序列化对象
jsonobj:TJSONObject;
begin
fstream:=TFileStream.Create('browser.png',fmOpenRead);
result := TDBXJSONTools.StreamToJSON(fstream,0,fstream.Size);
fstream.Free;
end;


这种方式我觉得更好一下 要用到
TDBXJSONTools
工具类 该类在 DBXJSONCommon单元文件中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: