Apache flex 在Flex中获得绝对本地路径

Apache flex 在Flex中获得绝对本地路径,apache-flex,Apache Flex,我环顾四周,我看到的最新参考资料是2008年的,其中指出标准的FileReference浏览器不支持检索用户文件的绝对本地路径,除非它是AIR应用程序,事实上,文档中没有任何其他建议。这背后的原因显然是一些被误导的安全问题。。。我明白让任何Flash应用程序知道你的目录结构不是一个好主意,但如果用户真的授予你的应用程序一个文件,我认为知道该文件的绝对路径不会使安全模型失效 我想知道Flex4是否改变了现状,是否有一种方法可以获取任何东西的本地文件名。我需要它,因为我正在制作一个应用程序,当分布式

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


我想知道Flex4是否改变了现状,是否有一种方法可以获取任何东西的本地文件名。我需要它,因为我正在制作一个应用程序,当分布式应用程序在99%的情况下在本地运行时,所以只需将完整的文件上传到本地计算机上的其他地方就显得很愚蠢。(加上标准的文件上传方法不支持SOAP,这是我在其他所有服务中使用的…)我总是可以让用户在其本地路径名中键入,但这看起来真的很愚蠢。

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

这取决于您试图实现的目标-您试图实现的目标并不明确

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

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

文件参考文档:

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

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

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

从中你可以猜出我运行的windows版本


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

现在我很好奇为什么有人会否决我。这是一个错误的安全决策,除非人们真的认为所有的内部网应用程序都应该导出到空中。我承认,比如说,图片预览的论点是站不住脚的,因为你可以在没有路径的情况下获取数据,除非你还想表示一个类似于用户文件系统的图像树。我也不理解反对票,但因为你有1个代表,他们失去了声誉。马安。。今天网上有很多喜欢触发的人:)如果人们愿意的话!“聪明”理解问题他们只是投了反对票。。。他们真可耻!如何加载用户选择的视频文件?任何涉及视频文件加载的Flash API是否接受“FileReference”作为源参数?哦,不,他们没有,所以我们需要完整的路径来处理本地文件,除非你可以直接处理加载的字节。“我如何加载用户选择的视频文件?”你部署一个基于空中的应用程序,可以做到这一点;这不是基于web的Flash应用程序的工作。这与基于web的JavaScript内容具有相同的安全性沙箱(出于同样的原因)。要有选择地保护和信任来自互联网的内容是非常困难的(Java小程序就是一个很好的例子),这就是为什么AIR有不同的部署和安全模型。实际上,我可以通过NetStream.appendBytes方法直接从FileReference获得的字节加载视频。问题是它只支持FLV头,所以我运气不好,因为我所有的文件都是较新的F4V格式。我不需要单独的运行时(AIR)来加载本地文件。Flash支持它,因为SWFs可以访问本地文件或网络。问题是ActionScript API需要完整路径,并且无法接受文件引用。显然,缺乏对F4V的支持也是一个失败。视频类可以使用loadBytes或load(FileReference)方法。