Sending a file between AIR applications using local connection
How do i send a text file between air applications using local connection?
Sender AIR
private var conn:LocalConnection;
public function init():void
{
conn=new LocalConnection();
conn.addEventListener(StatusEvent.STATUS,onStatus);
}
private function Sender():void {
var alphabets:File= File.createTempFile();
var file:FileStream = new FileStream();
file.open(alphabets,FileMode.WRITE);
file.writeUTFBytes("Have a nice day");
file.close();
conn.send("app#ReceiverAIR:MyConnection", "lcHandler",t1.text,alphabets);
}
private function onStatus(event:StatusEvent):void {
switch (event.level) {
case "status":
trace("LocalConnection.send() succeeded");
break;
开发者_如何学Ccase "error":
trace("LocalConnection.send() failed");
break;
}
}
]]>
</fx:Script>
<mx:TextArea id="t1" />
<mx:Button id="b1" label="Send" click="Sender()" />
Receiver AIR
import flash.net.LocalConnection;
import mx.collections.ArrayCollection;
private var conn:LocalConnection;
public function LocalConnectionReceiverExample() {
conn = new LocalConnection();
conn.client = this;
try {
conn.allowDomain('app#SenderAIR');
conn.connect("MyConnection");
} catch (error:ArgumentError) {
trace("Can't connect...the connection name is already being used by another SWF");
}
}
public function lcHandler(msg:String,myfile:File):void {
trace("i am in lcHandler");
t1.text=msg;
}
]]>
</fx:Script>
<mx:TextArea id="t1" editable="false"/>
It gives the following error
Error #2044: Unhandled AsyncErrorEvent:. text=Error #2095:
flash.net.LocalConnection was unable to invoke callback lcHandler.
error=TypeError: Error #1034:
Type Coercion failed:
cannot convert Object@83d6791 to flash.filesystem.File.
Edited to reflect changes from the OP
Thanks for the update. From what I understand, all the objects you send through a LocalConnection must meet the following stipulations:
- They must be serializable using AMF
- The serialized data must not exceed 40K
I am guessing that File is not a serializable type.
Things to try:
- Register an alias. Run
flash.net.registerClassAlias('FileAlias', File)
on both sides - Send a more primitive data type. Send the file name or the file data instead?
Good luck! Brian
u cant send a file this way... i finally created a byte array and sent the byte array to the receiver. Then i copied the byte array to a file at the receiver.
精彩评论