在FileReference.save方法中获取错误

时间:2012-01-10 12:21:46

标签: actionscript-3 flex flex3 filereference

我目前正在使用Flex 3.0我遇到了错误(屏幕截图如下)。我使用的是Flash Player版本10.0

目前我正在调用HTTPService并且在HTTPService的resultHandler中我在方法filereference.save()中收到错误。因为只有在发生MouseEvent或Keyboard事件时才会调用此方法。

是否有任何解决方案可以克服这种情况,或者换句话说,在ResultHandler中调用filereference.save方法。

enter image description here

3 个答案:

答案 0 :(得分:5)

原因是您不再允许自动触发文件保存弹出窗口的显示,除非用户实际通过用户生成的事件请求此操作。以下是有关该主题的更多信息:http://www.bogdanmanate.com/2010/05/12/flex-error-2176-when-using-filereference/

我使用帖子中描述的解决方案解决了这个问题,即使用是/否警报,向用户表明文件已完成加载并且已准备好下载,最后要求他确认他想在本地保存它。您可能会认为这些用户不友好,但它确实是关于安全性的。一旦您知道如何触发事件,您就可以找到绕过此UI问题的方法。

祝你有美好的一天!

答案 1 :(得分:1)

你做不到。您需要用户的单击按钮才能完成此操作。调度MouseEvent是没用的。 Romi方法可以帮助你。但出于安全原因,您需要点击按钮。

我做了什么..在结果中检索文件位置并像打开html页面一样打开它。然后你可以下载它。我认为没有其他解决办法,只能强迫用户点击像Romi所说的按钮。

var u:URLRequest = new URLRequest(event.result); 
navigateToURL(u, "_blank");

答案 2 :(得分:0)

另一种解决方案可能是将文件发送到服务器,然后让服务器将其发送回客户端,该客户端应触发浏览器的保存/打开对话框。但是如果文件是由flex创建的,那么这在带宽方面并不理想。