可不可以循环sleep一秒,并且判断最终生成的从临时目录copy到目标目录的文件是不是存在,如果存在就跳出来,并且每次往出打点.......什么的,只是想法,自己没做过。
但估计是可以的。

解决方案 »

  1. 想不到有什么办法可以按上传进度打点。只能做出loading效果。
      

  2. copy只有一个动作,sleep没法用啊
      

  3. 看看这个怎么样,刚写,没有完善
    <?php 
    //by iwind netcool@163.com
    set_time_limit("3600");
    ob_end_clean();
    for($i = 1;$i <= 300; $i++ ) echo(" "); 
    $file="jicheng.rar";//你要上传的东东
    $obj="upload/website.rar";//目标文件,就是文件上传到哪里
    $length="100";//进度条长度,可能不准备
    $pimg="pro.gif";//进度条图片
    $csize="10000";//每次拷贝的尺寸,单位字节$size=filesize($file);
    if(file_exists($obj)&&is_file($obj)){
       $fsize=filesize($obj);
    }
    else{
       $fsize="0";
    }
    $data=fread(fopen("$file","rb"),$size);
    $nums=ceil(($size-$fsize)/$csize);
    echo"<img src=$pimg width=".floor($length*$fsize/$size)." height=10>";
    for($i="0";$i<$nums;$i++){
       $start=$fsize+$i*$csize;
       $cdata=substr($data,$start,$csize);
       $msize=strlen($cdata);
       fwrite(fopen($obj,"ab"),$cdata);
       echo"<img src=$pimg width=".floor($length*$msize/$size)." height=10>";
       flush();
       sleep(1);
    }
    echo"上传成功";?>
      

  4. 楼主要的应该是上传过程的百分比的loading.
      

  5. 呵呵。改一下程序就行了啊。现有进度条长度除以总进度条长度,可以把这个值设成一个表单隐藏区域,当onchange时,把值再赋给其它东西。
      

  6. 模仿loading效果,但是不能精确定位:
    在 <body> 与 </body> 之间加入:<CENTER> 
    <TABLE cellSpacing=0 cellPadding=0 width=100% border=0 height="100%"> 
    <TBODY> <TR> <TD> 
    <DIV id=ld> <CENTER> 
    <H1> Loading...</H1>
    <TABLE width="50%"> 
    <TBODY> <TR> <TD align=left> 
    <TABLE id=lpc bgColor=#FFCC00> 
    <TBODY> <TR> <TD>&nbsp;</TD></TR></TBODY>
    </TABLE></TD></TR></TBODY></TABLE>
    </CENTER></DIV><DIV id=page style="DISPLAY: none"> <script language=JavaScript>
    ini = new Date().getTime();
    var pc = 0;
    load();function load() {
    pc += 4;
    lpc.style.width = pc + "%";
    time = setTimeout("load()",100);
    if (pc > 100) { clearTimeout(time); loaded() }
    }
    function loaded() {
    fim = new Date().getTime();
    dif = fim - ini;
    ld.style.display = 'none';
    page.style.display = '';
    }
    function Show() {
    if (txt.style.display == "none") { txt.style.display = "" }
    else { txt.style.display = "none" }
    }
    </script> 
    <table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%"> 
    <tr> <td>
    <div align="center"> <p><FONT COLOR="#00FF00">
    <B>文字区域</B></FONT></p></div></td></tr> 
    </table></div></TD></TR></TBODY></TABLE></CENTER>
     
      

  7. 其实真正的有现实意义的进度条应该是用activex或java applet
    http本身就不是面向持续连接的,
    事实上连yahoo的那个公文包也只给了一个gif的动画来给你一个感观的进度而已。
      

类似问题 »