使用URLLoader AS3上传图片的进度显示

8
我正在开发Flash中的图像上传器。 我使用FileReference.browse来浏览图片,然后将此图像调整大小为1000 x 1000 px,如果图像非常大,则上传到服务器。 我想显示图像上传进度条。
我正在使用URLLoader发送调整大小后的图像的二进制数据,但是URLLoader上的ProgressEvent并不按照其应该工作的方式工作。 它仅在图像完成上传后才被触发,而不是显示中间进度。 FileReference上的ProgressEvent完美地运行以显示中间图像上传进度。
是否有一种方法可以使用URLLoader显示上传进度?或者
我们可以使用FileReference加载修改后的图像,然后调用FileReference.upload,这样就可以显示实际进度条。
更新1: 但是我的问题是,我在使用FileReference.browse之后调整了浏览的图像大小,并且我想上传调整大小后的图像,而不是浏览后FileReference对象中的原始图片。 在这种情况下,如何使用Filereference.upload? Filereference.upload将上传原始图像而不是调整大小的图像。 有什么想法如何将调整大小后的图像放入Filereference对象中,然后使用FileReference.upload。
更新2: 无法在虚拟FileReference中设置数据,数据是只读属性。
更新3: 但是这也存在同样的问题,即不能显示图像上传进度,来自上面的链接:
“很遗憾,在发送数据到服务器期间无法获得进度事件。我们无法显示任何进度,因为flash不支持它”
我正要寻找上述问题的解决方案。 URLLoader可以很好地发布图像数据。

我正在做完全相同的事情,并遇到了同样的问题。我正在考虑在上传过程中放置一个“不精确的加载条”。 - Danita
考虑到我的情况,生成的文件大小通常大致相同,因此我设置了一个计时器来估算上传所需的时间,并让该计时器触发ProgressEvents以更新进度条。虽然不是最好的选择,但总比没有强,而且用户也感受不到差别。 - Danita
现在这才是一个“杰出的解决方案”。 - Tom
它很聪明,但完全不准确。 “在大多数情况下”并没有任何意义。我宁愿使用一个不确定的进度条,而不是欺骗用户。 - citizen conn
2个回答

3

URLLoader的设置方式是,只有在加载完成后才能接收到进度事件,如文档中所述,这里。也许您可以使用URLStream来获取所需的进度事件?我不确定URLStream的进度事件是否仅在下载服务器响应时触发,还是会针对完整的事务(上传和下载)进行触发,文档似乎没有明确说明。


1
这个已经被点赞两次了...我想知道是否有人尝试过并确认URLStream是否分派适当的进度事件?我在其他地方读到它不会,但迄今为止没有明确的来源...哦,好吧。 - Cameron
我在 URLStream 中没有看到任何提示表明它可以用于上传任何东西!文档详细描述了下载,但甚至没有上传方法。您能说明如何使用它来上传文件吗? - Yevgeny Simkin

-1
使用FileReference.upload方法,这正是这个方法的特定用途,你将会拥有进度指示器。

1
他并不试图上传原始文件,而是上传经过调整大小后的原始文件的JPEG编码的ByteArray。 - Danita
嗯,我记得原来的问题没有提到这个...好吧,我重新发布了一个新答案,适用于当前呈现的情况。 - JStriedl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接