作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在对 AS3 进行速度测试。遇到这样的问题。
我在我的测试中使用了 URLLoader( )
,对于下载测试它工作得很好,但是对于上传测试我遇到了一些麻烦。我正在向我的 php 脚本发送一些二进制数据,并检查 progress_event
以获取 bytesLoaded
,以计算当前速度,但事件没有调度,只有 complete_event
在发送整个文件时出现。那么如何通过字节发送过程来确定速度呢?
附言我无法使用 fileReference
,因为我正在一个接一个地使用我的测试,并且无法让用户在 filebrowse() 对话框中单击。
谢谢。
public function startme( ):void {
_startTime = ( new Date( ) ).getTime( );
var req:URLRequest = new URLRequest();
req.url = "http://smart.t3a.ru/speedtest/test.php";
req.contentType = 'application/octet-stream';
req.method = URLRequestMethod.POST;
req.data = Obj;
//req.requestHeaders.push( new URLRequestHeader( 'Cache-Control', 'no-cache' ) );
_loader = new URLLoader();
_loader.dataFormat = URLLoaderDataFormat.BINARY;
_loader.addEventListener(Event.COMPLETE,uploadComplete);
_loader.addEventListener(ProgressEvent.PROGRESS, uploadProgress );
_loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, onstatus);
_loader.addEventListener(IOErrorEvent.IO_ERROR, eIOError);
_loader.load(req);
}
private function onstatus(event:HTTPStatusEvent):void
{
trace(event);
}
private function eIOError(event:IOErrorEvent):void
{
trace(event);
}
private function uploadComplete( e:Event ):void
{
var endTime:Number = ( new Date( ) ).getTime( );
var totalTime:Number = ( endTime - _startTime ) / 1000;
var totalKB:Number = Obj.length * 8 / 1024;
//_speed = totalKB / totalTime;
if (debug)
{
trace( "U total time: " + totalTime + " total KB: " + totalKB + " speed: " + speed + "KBps" );
}
dispatchEvent( e );
}
private function uploadProgress( e:ProgressEvent ):void
{
var endTime:Number = ( new Date( ) ).getTime( );
var totalTime:Number = ( endTime - _startTime ) / 1000;
if (totalTime > 1)
{
var totalKB:Number = e.bytesLoaded * 8 / 1024;
_speed = totalKB / totalTime;
if (debug)
{
trace( "u total time: " + totalTime + " total KB: " + totalKB + " speed: " + speed + "KBps" );
}
dispatchEvent( e );
}
if (totalTime > 7)
{
var ec:Event = new Event(Event.COMPLETE);
_loader.dispatchEvent(ec);
_loader.close();
}
}
UPD我的 PHP 脚本:
<?
$postdata = file_get_contents("php://input");
file_put_contents("inp.bin",var_export($postdata,true));
echo "Done";
?>
是的,它很小,但我真的不需要数据,我需要检查它的上传速度。
UPD 2
因此,在阅读了所有答案、评论和谷歌搜索数小时后,我可能找到了解决方案,但它的制作方式与我一开始所希望的有所不同。无论如何 TYVM 所有,我会尽快发布解决方案。
最佳答案
尝试添加这个,看看你是否收到错误。这可能是问题所在。
_loader.addEventListener("ioError", ldrError);
function ldrError(evt:*):void
{
trace("ERROR");
}
可能是你的php脚本有问题
关于flash - AS3上传速度测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9257798/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!