Delphi Xe DataSnap Rest + Flex 开发 基本探索6(flex 前台 Post 字节流 参数)

在看本文章前请 参考前面的文章

这篇文章 介绍 flex 如何 在调用delphi datasnap 的Rest服务过程中以 大量的数据为参数 (字节流 )

该方法 在网络上 基本没有资料,废掉了我无数的脑细胞啊,再次 bs emb 帮助太操蛋了

首先 大量的数据不能通过前面的方式 直接写在Rest 地址的后面.

我用了http post 方法

效果如下

这是flex 前台传输到后代的 字节码,后台代码如下

function TSMTest.updateSetBytes(stream:TJSONObject): string;
var
  i:integer;
begin

  FrmMain.Memo1.Lines.Add('jsonValue:'+(stream.ToString));
end;

主要 是参数为Tjsonobject

前台 主要是传输了一个 jpg的图片

前台代码如下

var fileReference:FileReference = new FileReference();  
			protected function btnUpLoad_clickHandler(event:MouseEvent):void
			{
				
			
		    fileReference.addEventListener(Event.SELECT, onSelect);   
			fileReference.addEventListener(Event.COMPLETE,onComplete);  
			//urlRequest = new URLRequest("http://localhost:8666/Ashx/FileHandler.ashx");
			
			browse();
			}
			
			private function onSelect(evt:Event):void{  
				labstate.text="文件:"+fileReference.name+"      "+"大小:"+fileReference.size+"字节";  
				fileReference.load();  
			}  
			private function onComplete(evt:Event):void{  
				imgUpload.source=fileReference.data; 				
				var read :ReadDataFromServer = new ReadDataFromServer();
				read.onLoadComplete = onBytesParam;
				
				var barr:ByteArray= fileReference.data;
				
				barr.position =0;
				var  arr:Array = new Array();
				for(var i:int=0;i<barr.length;i++){				   
					arr.push(barr.readUnsignedByte());				
				}
				var ubArr:ByteArray = new ByteArray();
				for( i=0;i<arr.length;i++){				   
					ubArr.writeUnsignedInt(arr[i]);				
				}
				 
                				
				var str :String ='{"Array":['+ JSON.encode(arr)+"]}";			
				read.PostJson('datasnap/rest/TSMTest/SetBytes',str);	
				///
				
			}  
			public function onBytesParam(e:Event):void{
			
			
			
			}
			private function browse():void{  
				var imageTypes:FileFilter = new FileFilter("图片 (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg; *.jpeg; *.gif; *.png");  
				var allTypes:Array = new Array(imageTypes);  
				try  
				{  
					fileReference.browse(allTypes);  
				}  
				catch(e:Error)  
				{  
					Alert.show(e.message+"&&"+e.getStackTrace());  
				}  
			}  

注意
'datasnap/rest/TSMTest/SetBytes'
这个方法,后台必须 在方法名 加上 update 这个头,不知道为什么....

哎摸索上面的方法,真是不容易啊,,再次bs emb 为啥 资料不搞详细点,李维老师的 datasnap 实战 的书籍 中的介绍也 感觉很粗糙......希望李老师能再出几本精品的书籍啊.....



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值