0

我使用 ShineMP3 录制声音。现在我正在尝试将 mp3 文件上传到服务器。这是我的 AS3 代码:

function onWavClick(e:MouseEvent)
{
  var sba:ByteArray = mp3Encoder.mp3Data; 
  var req:URLRequest = new URLRequest('http://localhost/upload.php');
  req.contentType = 'application/octet-stream';
  req.method = URLRequestMethod.POST;
  req.data = sba;           
  var loader:URLLoader = new URLLoader(req);
}

如何显示上传的百分比,以及是否已完成并成功转到下一帧?

谢谢。

4

2 回答 2

0

一个建议可能是这个 PHP 上传进度条:

http://www.johnboyproductions.com/php-upload-progress-bar/

于 2013-10-14T11:25:51.370 回答
0

使用 URLLoader 的方法,而不是传递URLRequest你的构造函数。确实没有任何情况应该通过构造函数传递请求,因为它会立即启动请求并且可以在您有时能够附加事件侦听器之前完成。始终遵循以下流程:URLLoaderload()

  1. 实例化 URLLoader 和 URLRequest
  2. 附加事件侦听器并在两者上设置属性
  3. 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
}
于 2013-10-14T16:03:49.537 回答