繁体   English   中英

使用AIR 2(AS3)将字节数组从C#Web服务转换为文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM