我环顾四周,我看到的最新参考是从2008年开始说明标准的FileReference
浏览器不支持检索用户文件的绝对本地路径,除非它是AIR应用程序,实际上文档中没有任何建议除此以外。这背后的原因显然是一些误导性的安全问题...我觉得让任何Flash应用程序知道你的目录结构并不是一个好主意,但如果用户实际上给你的应用程序一个文件,我认为它不会使安全性失效模型只知道该文件的绝对路径。
我想知道Flex 4的状态是否发生了变化,并且有一种获取任何东西的本地文件名的方法。我需要它,因为我正在创建一个应用程序,当分布式在99%的情况下在本地运行时,所以做一个完整的文件上传只是为了将它保存在本地机器上的其他地方似乎很愚蠢。 (另外标准文件上传方法不支持SOAP,这是我用于所有其他服务的...)我总是可以让用户输入他们的本地路径名,但这看起来真的很愚蠢。 / p>
答案 0 :(得分:3)
出于安全原因,在Flash(而不是AIR)中,您不能看到fileReference文件的完整路径。
答案 1 :(得分:0)
这取决于你想要达到的目标 - 你不清楚自己要做什么。
“执行完整文件上传只是为了将其保存在本地计算机上的其他位置似乎很愚蠢”
从Flash Player 10开始,您可以直接保存到本地文件系统,而无需通过远程服务器。您只需调用FileReference.download()
函数以响应用户访客,例如鼠标单击或按键(例如,按下保存按钮)。
FileReference文档: 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 - 这就是它存在的原因。