我目前正在创建一系列上传的as3 / PHP类 - 编码+下载图像。
任何人都知道在将ByteArray发布到服务器时是否有办法报告进度?
ProgressEvent不起作用 -
至少不是在上传ByteArray的情况下 -
它仅在上传后报告进度
这是我正在使用的代码的剥离版本......
urlLoader=new URLLoader;
urlLoader.dataFormat=URLLoaderDataFormat.BINARY;
urlLoader.addEventListener(ProgressEvent.PROGRESS,progressHandler);
//
function progressHandler(e:ProgressEvent):void {
trace(e.bytesLoaded/e.bytesTotal);
}
谢谢-MW
答案 0 :(得分:1)
您使用的是URLLoader吗?您应该可以向其添加ProgressEvent侦听器。
编辑:您可能需要从PHP发回数据,请参阅此处:Grab a ProgressEvent from a POST upload in as3
http://www.ibm.com/developerworks/library/os-php-v525/index.html
答案 1 :(得分:0)
URLLoader虽然支持向服务器发送数据,但它是为下载数据而设计的。仅当收到来自的服务器的数据时,才会触发ProgressEvents。在上传的情况下,这意味着在上传完成后将发生所有ProgressEvents。
如果文件不在用户的硬盘上,您可以使用FileReference类将其上传到服务器, 在上传过程中调度ProgressEvents(而不只是下载)。
此外,如果您使用的是Flash Player 10,则可以将用户计算机上的文件load直接导入到Flash中,对其进行操作,然后save将其再次退出(或者只是在不涉及服务器的情况下在Flash中使用它。但是,如果您要将图像编码为Flash(或第三方ActionScript库)无法理解的格式,则可能无法选择此项。
答案 2 :(得分:0)
您应该查看此ActionScript 3库:http://code.google.com/p/as3httpclient/
它可以解决您的问题。我目前正在一个项目中使用它,它很棒。