从Flex中的字节流启动文件下载

时间:2013-09-16 18:30:07

标签: file flex download

我在Flex Web应用程序中有一种情况,我们使用PHP Web服务来查找,读取内容,然后将Base64编码数据作为XML文档的一部分发送回Flex应用程序。然后必须提取Flex应用程序, Base64解码字节流,然后直接将其发送给浏览器用户(用于下载),而无需将文件写入磁盘。

这一切都必须在点击“现在下载”按钮时发生。

我一直在搜索,但我发现的只是从URL下载或实际将字节流写入磁盘的例子,我不想要。

我需要将流直接推送到浏览器。通过这种方式,我可以保护服务器上的文件不受公共访问的影响而受到保护。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您可以将ByteArray弹出到Loader中,然后使用FileReference启动下载对话框。

var file:FileReference = new FileReference();
var loader:Loader = new Loader();
//put loader in binary mode
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, loader_completeHandler);

//I will assume you are getting an appropriate ByteArray from your stream
var data:ByteArray = new ByteArray();
loader.loadBytes(data);

private function loader_completeHandler(evt:Event):void {
    //now pop a save window
    file.save(loader.data,"default_file_name.png")
}

修改

我还假设您这样做是为了通过非标准协议(例如AMF)流式传输文件,否则您只需通过HTTP输出文件并让浏览器处理其余文件。