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

在看本文章前,请参考前面的 部分代码和介绍

从后台取字节流 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单元文件中



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值