![](/img/trans.png)
[英]Send file from C# Server to AS3 AIR Clients using Sockets in a Local Network - with sample
[英]Convert a byte array from a C# web service in to a file using AIR 2 (AS3)
我正在使用用C#创建的Web服务,其目的是从服务器获取文件,并且试图在AIR 2(AS3)中使用它。
实际上,我可以使用以下库与Web服务进行通信: http : //labs.alducente.com/gophr/
当我调用webservice函数时,得到以下XML:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetFileResponse xmlns="http://tempuri.org/">
<GetFileResult>ZXN0byBlcyB1bmEgcHJ1ZWJhDQoNCnZhbW9zIGEgdmVyIHNpIHRyYWJhamENCg0KbXVhamphamFq</GetFileResult>
</GetFileResponse>
</soap:Body>
</soap:Envelope>
该文件在此标记内编码:
< GetFileResult >
ZXN0byBlcyB1bmEgcHJ1ZWJhDQoNCnZhbW9zIGEgdmVyIHNpIHRyYWJhamENCg0KbXVhamphamFq
< /GetFileResult >
那么我该如何解码并写入硬盘...
Web服务代码:
[WebMethod]
public byte[] GetFile(string path)
{
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
// Create a byte array of file stream length
byte[] ImageData = new byte[fs.Length];
//Read block of bytes from stream into the byte array
fs.Read(ImageData,0,System.Convert.ToInt32(fs.Length));
//Close the File Stream fs.Close();
return ImageData;
//return the byte data
}
使用Base64类(http://www.foxarc.com/blog/article/60.htm)的静态方法解码,并使用简单的as3代码来完成此操作。
function done(serviceRespone:XML):void{
var d = serviceRespone.children()[0].children()[0].children()[0];
var bytes:ByteArray = Base64.decode(d);
var newFile:File = File.desktopDirectory.resolvePath("MyNewFile.txt");
var fileStream:FileStream = new FileStream();
fileStream.open(newFile, FileMode.WRITE);
fileStream.writeBytes(bytes);
fileStream.close();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.