Flex FileReference没法弹出保存文件对话框 #2176

1.文一

flash10开始,FileReference增加了一个save方法,参数为(data:Object, defaultFileName:String = null),在调用save方法时,只需将文件内容传给data,浏览器会自动打开一个保存对话框,让用户选择保存目录。有两个要注意的地方,1、save方法flash10及以上才有,客户端flash版本需跟上,且代码编译环境也要在10以上,eclipse环境下,选中项目,右键properties,flex compiler选项,将required flash player version 设为10.0.0或以上,否则将找不到save方法。2、save方法只能通过用户交互来调用。怎么理解用户交互,例如,点击一个下载按钮这算是用户交互,而一般的回调方法则不是用户交互。如下载一张图片,如果图片还没加载进来,我们经常是先要进行加载,然后监听事件,然后在回调函数里进行处理,如果将save方法写在回调函数里面,将会报错:Error #2176: 某些动作(如显示弹出窗口的动作)只能通过用户交互来调用。所以很多时候我们必须采用双按钮,一个用来加载数据,一个用来下载数据。

2.文二

问题解决。原因在于Flash Player 10的安全限制,只能确保下载由用户交互事件发起,暂时绕不过去。即使按照上面两个帖子的方法,使用回调函数或动态添加侦听事件等都没法生效,可能是水平有限吧。

搞一天了,最后还是总结下几种解决方案:

1、在Flash Player 10 + FileReference下,要解决只能确保下载由用户交互事件发起,比如弹出确认框由用户点击确认后再下载。

2、Flash Player + Octet-stream。不用FileReference。

3、Flash Player 9 + FileReference。无安全限制。

 

3.官方文档

http://fising.cn/docs/AS3_Reference/flash/net/FileReference.html

posted on 2015-08-25 10:02  杭州糊涂虫  阅读(183)  评论(0)    收藏  举报

导航