Flex调用本地文件分析
最近在用Flex做一个相册的功能,因为图片数据很多,所以想调用本地文件的方式做。
但是B/S的缘故,很多安全上的限制给我造成了不小的麻烦,把我这个小菜鸟弄的晕头转向。
第一,刚开始,查了很多资料发现都说web端因为安全限制不能调本地的文件,如果可以随便调的话岂不黑客可以随便用网站偷窥用户隐私文件了?
可是令人困惑的是,竟然有的网文说可以,我调用了代码进行了尝试,发现真的可行!
但那是用的本地调试,即调试时地址栏显示项目在本地的位置(C:\...),将网站发布到IIS上,再调试时,即地址栏显示的是(http://localhost....)报错”只有仅限于文件系统的 SWF 文件和可信的本地 SWF 文件可以访问本地资源。“
所以排除了直接加载本地图片的这个念头。
第二,又想到了采用转成二进制流来传给后台读取和存储,实际证明可行,而且网上很多资料都采用了这种方法。
第三,又发现采用将图片发布后调用,这个方法成功,而且很简单。就是不知道有没有弊端。
第四,又查到资料说像qq更改头像功能,可以浏览本地图片并预览。并给出了代码,我在发布的网站上(http://localhost..)一试,可行!
此时我晕了,到底可不可以呢?
这条方法和第一条的区别在于,第一条使用的是Loader读取固定路径下的文件,而此处是用的FileReference读取用户选择的图片。
再一查,发现有人这么说:”加载固定文件的话用Loader和UrlLoader,FileReference为了安全禁止这样做“
我现在的理解是:FileReference能够在安全限制下读取本地路径下的文件,而Loader和UrlLoader不允许。
小菜鸟的见解,如有大神看到我的观点,望能够不吝赐教。
PS:文中提到的方法将在另外随笔中贴出