我正在尝试让应用程序上传多个客户端生成的图像(不是文件,因此我不能使用 FileReference),同时显示上传进度。事实证明,这比它应该做的要难得多。我正在使用 Cairngorm 任务库对客户端生成的图像执行以下步骤:
- 生成一个绘制舞台区域内容的 BitmapData 对象
- 将图像异步编码为 JPEG,以显示进度条(请参阅http://dgrigg.com/blog/2009/03/05/as3-jpegencoder-and-big-images/)
- 异步上传图片(分块,参见http://soenkerohde.com/2010/01/chunk-file-upload/)以显示进度
当用户点击一个按钮时,SequenceTask 启动,编码就像一个魅力,但是当上传任务发生时,它会因错误而起火:
SecurityError:错误 #2176:某些操作(例如显示弹出窗口的操作)只能在用户交互时调用,例如通过鼠标单击或按钮按下。
我相信这是因为您无法在没有用户干预的情况下启动 URLLoader.load 操作。即使用户点击按钮,我认为因为事情开始异步发生,这个点击事件不再被视为发起者。
有没有办法让 URLLoader 知道这是鼠标点击的结果?这对于分块上传的工作来说是必不可少的,因为所有后续块也将启动一个新的 URLLoader,所以我不能 100% 确定来自参考的分块上传器确实有效。我可能会先尝试只运行他们的纯代码。
感谢您的任何想法。