【问题标题】:Flex launching pdf/doc file which is downloaded as ByteArrayFlex 启动下载为 ByteArray 的 pdf/doc 文件
【发布时间】:2012-04-05 02:17:30
【问题描述】:

我想使用 flex 打开一个 pdf/excel/doc,众所周知我们可以使用 navigateToUrl(URL) 方法从服务器打开一个文件。但我的问题是这些文件在服务器中是加密的,所以我按如下方式加载文件

ByteLoader = new URLLoader();
ByteLoader.dataFormat = URLLoaderDataFormat.BINARY;
ByteLoader.load(new URLRequest (constructedURL));

这样我就可以操纵它们并获得解密的文件。现在我的问题是,我的数据已经从服务器下载了,那么我将如何使用我获得的二进制内容启动文件(pdf/doc/excel)?

我是否可以像在 navigateToURL() 中那样启动这些文件?

【问题讨论】:

  • 是AIR应用还是浏览器集成swf?
  • 嗨 Yordan,它是基于浏览器的,而不是 AIR 应用程序。谢谢,玛尼

标签: apache-flex pdf bytearray


【解决方案1】:

我没有直接的答案,这种情况很多次,但我可以提供一种备用解决方案,您可以使用FileReference save method(相信这是 Flash Player 10 及更高版本)。然后问题变成打开本地保存的文件,因为根据文档,名称仅由浏览或下载方法填充,但不保存您可能无法使用该名称(此外,我相信这只是文件的名称不包括它保存到的完整本机路径,但是这可能值得探索)。如果您能够以某种方式获取文件保存到的本机路径,我想您可以使用 navigateToURL(new URLRequest("file:///")) 来打开本地文件,我试过了最后一部分包含我已经保存在硬盘上的文件并且它有效:

        var fr:FileReference = new FileReference();
        fr.save("something worth saving", "somefile.txt");
        fr.addEventListener(Event.SELECT, function(event:Event):void
        {
            trace("something selected: " + event.target.name);
        });

        navigateToURL(new URLRequest("file:///C:/tmp0001-0160.avi"));

基本上,虽然看起来要让它真正起作用,但您需要保证您知道用户将保存文件的位置,最好让他们保存并自己打开它,除非有人可以提供更好的解决方案。

【讨论】:

    猜你喜欢
    • 2018-12-13
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 2019-11-26
    相关资源
    最近更新 更多