1

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

例如,这一切都必须在单击“立即下载”按钮时发生。

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

我需要将流直接推送到浏览器。这样,我可以通过在网络空间之外而不是公开访问来保护服务器上的文件。

任何人都可以帮忙吗?

4

1 回答 1

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 输出文件并让浏览器处理其余部分。

于 2013-09-18T23:02:56.243 回答