使用 URLLoader 的方法,而不是传递URLRequest
你的构造函数。确实没有任何情况应该通过构造函数传递请求,因为它会立即启动请求并且可以在您有时能够附加事件侦听器之前完成。始终遵循以下流程:URLLoader
load()
- 实例化 URLLoader 和 URLRequest
- 附加事件侦听器并在两者上设置属性
load()
使用 URLRequest调用
这将允许您附加一个ProgressEvent
类型的事件PROGRESS
,该事件在调度时将包括一个bytesTotal
和一个bytesLoaded
属性。您可以使用这些来显示所需的百分比。您也可以 attach Event.COMPLETE
,它会在上传完成时触发。
function onWavClick(e:MouseEvent)
{
var sba:ByteArray = mp3Encoder.mp3Data;
var req:URLRequest = new URLRequest(URL);
req.contentType = 'application/octet-stream';
req.method = URLRequestMethod.POST;
req.data = sba;
var loader:URLLoader = new URLLoader();
loader.addEventListener( ProgressEvent.PROGRESS, progressHandler );
loader.addEventListener( Event.COMPLETE, completeHandler );
loader.load( req );
}
function progressHandler( e:ProgressEvent ):void {
trace( e.bytesLoaded / e.bytesTotal ); // output: progress, as a decimal from 0 to 1
}
function completeHandler( Event ):void {
// download/upload is complete
}