我用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);
}
如何显示上传的百分比,如果上传已完成并成功转到下一帧?
谢谢。
URLLoader
的构造函数中传递URLRequest
,而是使用 URLLoader 的 load()
方法。实际上,您不应该通过构造函数传递请求,因为它会立即启动请求,并且可以在您有时能够附加事件侦听器之前完成。始终遵循以下过程:
- Instance iate URLLoader and URLRequest
- 附加事件侦听器并设置两者的属性
- 使用 URLRequest 调用
load()
这将允许您附加类型 PROGRESS
的 ProgressEvent
事件,该事件在调度时将包括bytesTotal
和bytesLoaded
属性。您可以使用它们来显示所需的百分比。您还可以附加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
}
一个建议可能是这个PHP上传进度条:
http://www.johnboyproductions.com/php-upload-progress-bar/