我正在尝试从客户端(用as3编写)向服务器发送一个bitmapdata(用C#编写)。 收到bitmapData后,服务器应将图像添加到给定位置的文件夹中。我将文件名和bitmapData一起发送到服务器。我能够读取文件名,但我无法读取服务器端的bitmapData。它不断抛出" ArgumentExceptionOccured - 参数无效"异常。
有人能告诉我如何将图像从客户端(as3)发送到服务器(C#)吗?
客户端代码:
function onScreenCaptureClick(event:MouseEvent):Void
{
var filename:String = "TEST123";
var myBitmapData:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight);
myBitmapData.draw(stage);
// Custom Network class which contains the 'openNetworkToken' method to send the image to the server
Network.OpenNetworkToken("ADDIMAGE" + "|" + filename + "|" + myBitmapData);
}
服务器端代码:
private void onAddImagesHandler(MessageEventArgs args)
{
if (args.IsTokenized)
{
System.Diagnostics.Debug.WriteLine("### CREATE MESSAGE RECEIVED ###");
System.Diagnostics.Debug.WriteLine("Message: " + args.OriginalMessage);
try
{
string filename = args.Arguements[0];
Bitmap img = new Bitmap(args.Arguements[1]); // "ArgumentExceptionOccured - Parameter is not valid"
}
catch (Exception ex)
{
}
args.SendResponse("ImageADDED", true);
}
}
任何帮助表示赞赏
谢谢, Vinu
答案 0 :(得分:1)
您可以将您的位图转换为PNG并使用以下代码发送Base64编码:
var byteArray:ByteArray = new ByteArray();
myBitmapData.encode(new Rectangle(0,0,640,480), new flash.display.PNGEncoderOptions(), byteArray);
var encoder:Base64Encoder = new Base64Encoder();
encoder.encodeBytes(byteArray);
Network.OpenNetworkToken("ADDIMAGE" + "|" + filename + "|" + encoder.toString());
如果您可以更改适合的网络类,则可以使用更有效的方式传输数据。有关该方法的基本概要,请参见https://stackoverflow.com/a/1438199/514087。