【问题标题】:Getting an absolute local path in Flex在 Flex 中获取绝对本地路径
【发布时间】:2010-10-09 05:10:59
【问题描述】:

我环顾四周,我看到的最新参考资料来自 2008 年,指出标准 FileReference 浏览器不支持检索用户文件的绝对本地路径,除非它是 AIR 应用程序,而且文档中确实没有任何其他建议。这背后的原因显然是一些被误导的安全问题......我知道让任何 Flash 应用程序知道您的目录结构并不是一个好主意,但如果用户实际上授予您的应用程序一个文件,我认为它不会使安全性无效模型只知道该文件的绝对路径。

我想知道 Flex 4 的情况是否发生了变化,并且有一种方法可以获取任何内容的本地文件名。我需要它,因为我正在制作一个在 99% 的情况下在本地运行的应用程序,所以上传完整的文件只是为了将它保存在本地机器上的其他地方似乎很愚蠢。 (加上标准文件上传方法不支持 SOAP,这是我用于所有其他服务的方法......)我总是可以让用户输入他们的本地路径名,但这似乎真的很愚蠢。

【问题讨论】:

  • 现在我很好奇为什么有人会否决我。除非人们真的认为所有的 Intranet 应用程序都应该导出到 AIR,否则这无疑是一个糟糕的安全决策。我承认,图片预览的论点不成立,因为您可以在没有路径的情况下获取数据,除非您还想表示类似于用户文件系统的图像树。
  • 我也不理解反对票,但既然你有 1 个代表,他们就是那些失去声誉的人。 Maaaan .. 今天有很多触发快乐的人在线 :)
  • 如果人们要“聪明”地理解他们只是投反对票的问题......真为他们感到羞耻!

标签: apache-flex


【解决方案1】:

出于安全原因,在 Flash(不是 AIR)中,不允许您查看 fileReference 文件的完整路径。

【讨论】:

    【解决方案2】:

    这取决于你想要达到的目标 - 你想要做什么并不完全清楚。

    “上传完整文件只是为了将其保存在本地机器上的其他位置似乎很愚蠢”

    从 flash player 10 开始,您可以直接保存到本地文件系统,而无需通过远程服务器。您只需调用 FileReference.download() 函数来响应用户的手势,例如鼠标点击或按键(例如按下保存按钮)。

    文件参考文档: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/FileReference.html#download%28%29

    否则,不,您无法获得文件的完整路径,因为这可能会带来安全风险 - 即使他们自己选择了文件。

    例如,如果我在 Windows 机器的桌面上选择一个文件,我真的不希望某个随机的 Web 应用程序知道我的用户名:

    “C:\Documents and Settings\ [用户名] \Desktop\myAwesomeFile.txt”

    从中您可以猜测我正在运行的 Windows 版本。

    如果您需要与用户桌面进行更多交互,那么您应该使用 AIR - 这就是存在的原因。

    【讨论】:

    • 如何加载用户选择的视频文件?任何涉及加载视频文件的 Flash API 都接受“FileReference”作为源参数吗?哦,不,他们没有,所以我们需要完整路径来对本地文件做任何有用的事情,除非你可以直接处理加载的字节。
    • "如何加载用户选择的视频文件?"您部署一个可以执行此操作的基于 AIR 的应用程序;这不是基于 Web 的 Flash 应用程序的工作。它与基于 Web 的 JavaScript 内容具有相同类型的安全沙盒(并且出于相同的原因)。有选择地保护和信任来自 Internet 的内容非常困难(Java 小程序就是一个典型的例子),这就是 AIR 具有不同部署和安全模型的原因。
    • 实际上,我可以通过 NetStream.appendBytes 方法直接从 FileReference 获得的字节中加载视频。问题是它只支持 FLV 标头,所以我很不走运,因为我所有的文件都是较新的 F4V 格式。我不需要单独的运行时 (AIR) 来加载本地文件。 Flash 支持它,因为 SWF 可以访问本地文件或网络。问题是 ActionScript API 需要完整路径,并且无法接受 FileReference。显然,缺乏对 F4V 的支持也是一种失败。视频类可以使用 loadBytes 或 load(FileReference) 方法。
    猜你喜欢
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    相关资源
    最近更新 更多