flex端:
RemotingConnection.as
package com.esri.viewer.utils { import flash.net.NetConnection; import flash.net.ObjectEncoding; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.Event; import flash.system.Security; public class RemotingConnection extends NetConnection { public function RemotingConnection(gatewayUrl:String) { //设置通信权限 Security.allowDomain(gatewayUrl); //设置数据格式 this.objectEncoding = ObjectEncoding.AMF3; //连接网关 this.connect(gatewayUrl); } } }
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="application1_creationCompleteHandler(event)"> <fx:Script> <![CDATA[ import com.esri.viewer.utils.RemotingConnection; import mx.controls.Alert; import mx.events.FlexEvent; import mx.graphics.codec.PNGEncoder; [Bindable] private var _strName:String; private var conn:RemotingConnection; private var byte:ByteArray; private var fname:String; private var __url:String = "http://localhost/FxNETChannel_1/Gateway.aspx"; protected function application1_creationCompleteHandler(event:FlexEvent):void { // TODO Auto-generated method stub var date:Date = new Date(); fname = date.fullYear.toString() + (date.month+1).toString()+date.date.toString() +date.hours.toString()+date.seconds.toString()+date.minutes.toString()+".png"; var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderCompleteHandler); loader.load(new URLRequest("assets/s.jpg")); } private function loaderCompleteHandler(event:Event):void { imgSend.source = event.currentTarget.content.bitmapData; byte = new mx.graphics.codec.PNGEncoder().encode(event.currentTarget.content.bitmapData); } private function onResult(result:ByteArray):void { if(result!=null) { var l:Loader = new Loader(); l.contentLoaderInfo.addEventListener(Event.COMPLETE,lCompleteHandler); l.loadBytes(result); } } private function lCompleteHandler(e:Event):void { imgGet.source = e.currentTarget.content.bitmapData; } private function onFault(fault:Object):void { Alert.show("失败!"); } private function btnOkClickHandler():void { conn = new RemotingConnection(__url); conn.call("RemotingService.ImageUploadManage.UploadImage",new Responder(onResult,onFault),byte,fname); } ]]> </fx:Script> <fx:Declarations> <!-- Place non-visual elements (e.g., services, value objects) here --> </fx:Declarations> <s:layout> <s:HorizontalLayout /> </s:layout> <s:VGroup> <s:Button id="btnOk" label="send" click="btnOkClickHandler()"/> <s:Scroller> <s:Group width="500" height="300"> <s:Image id="imgSend" source=""/> </s:Group> </s:Scroller> </s:VGroup> <s:Scroller> <s:Group width="500" height="300"> <s:Image id="imgGet" source=""/> </s:Group> </s:Scroller> </s:Application>
.net端:
ImageUploadManage.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using App_CORE.DBAPI; using FluorineFx.AMF3; using System.IO; using System.Web; using System.Drawing.Imaging; using System.Drawing; namespace RemotingService { /// <summary> /// 图片上传管理 /// author:chenxiangji /// </summary> [FluorineFx.RemotingService("Fluorine service:ImageUploadManage")] public class ImageUploadManage { public ImageUploadManage() { } public ByteArray UploadImage(ByteArray ba,string fileName) { MemoryStream stream = new MemoryStream(ba.GetBuffer()); Image img = Bitmap.FromStream(stream); Bitmap bitmap = new Bitmap(img); MemoryStream tempStream = new MemoryStream(); bitmap.Save(tempStream,ImageFormat.Png); string path = HttpContext.Current.Server.MapPath("FileUpload/Image/" + fileName); FileStream fileStream = new FileStream(path, FileMode.Create); tempStream.WriteTo(fileStream); fileStream.Close(); ByteArray result = new ByteArray(tempStream); return result; } } }