`
kayo
  • 浏览: 557954 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

上传带进度条

阅读更多

<html>

<body>

<script language="javascript">
var oXMLDoc = new ActiveXObject("Microsoft.XMLDOM");            //创建'MSXML'对象
oXMLDoc.async = true; 
var theUniqueID= 0;
var iTimerID=null;        //这个变量是作定时器的ID

//让数据提交的同时执行显示进度条的函数
function UploadData()   
{
    theUniqueID = (new Date()).getTime() % 1000000000;

    // 清除原始数据
    PercentDone.style.width = "0%";
    ElapsedTime.innerHTML = "";
    TimeLeft.innerHTML = "";
    SizeCompleted.innerHTML = "";
    TotalSize.innerHTML = "";
    TransferRate.innerHTML = "";

    document.myform.action = "demo.asp?ProgressID=" + theUniqueID;  //处理上传数据的程序
    //将提交的数据放在一个名字是upload隐藏的iframe里面处理,这样提交的页面就不会跳转到处理数据的页
    document.myform.target="upload" 
    document.myform.submit();     //提交表单

    ProgressBar();      //开始执行反映上传情况的函数

}

function ProgressBar()
{

   
    sURL = "Progress_Xml.asp?ProgressID=" + theUniqueID + "&temp="+Math.random();      //获取上传状态数据的地址
    oXMLDoc.onreadystatechange = Function( "fnLoadComplete();" );   
    oXMLDoc.load( sURL );
   
}

function fnLoadComplete()
{
    var iReadyState;
    try
    {
        iReadyState = oXMLDoc.readyState;
    }
    catch(e)
    {
        return;
    }
    if(  iReadyState != 4 ) return;
   
    if( oXMLDoc == null || oXMLDoc.xml == "" )
    {
        window.status = 'Xml load fault';
        return;
    }

    var oRoot = oXMLDoc.documentElement;     //获取返回xml数据的根节点

    if(oRoot != null) 
    {
        if (oRoot.selectSingleNode("ErrorMessage") == null)
        {

            var readyState = oRoot.selectSingleNode("ReadyState").text;

            // 如果还没初始化完成,继续
            if ( readyState == "uninitialized" )
            {
                iTimerID = setTimeout("ProgressBar()", 1000);
            }
            // 上传进行中
            else if ( readyState == "loading" )              //文件上传结束就取消定时器
            {

                bar1.style.display = 'block';  //让显示上传进度显示的层的可见

                PercentDone.style.width = oRoot.selectSingleNode("Percentage").text;        //设置进度条的百分比例
                //根据返回的数据在客户端显示
                ElapsedTime.innerHTML = oRoot.selectSingleNode("ElapsedTime").text;       //显示剩余时间
                TimeLeft.innerHTML = oRoot.selectSingleNode("TimeLeft").text;       //显示剩余时间
                SizeCompleted.innerHTML = oRoot.selectSingleNode("SizeCompleted").text;    //已上传数据大小
                TotalSize.innerHTML = oRoot.selectSingleNode("TotalSize").text;    //总大小
                TransferRate.innerHTML=oRoot.selectSingleNode("TransferRate").text; //传输速率

                //这里设定时间间隔是0.5秒,你也可以根据你的情况修改获取数据时间间隔
                iTimerID = setTimeout("ProgressBar()", 100);
            }
            // 上传结束
            else if ( readyState == "loaded" )
            {
                PercentDone.style.width = "100%";        //设置进度条的百分比例
                if (iTimerID != null)
                    clearTimeout(iTimerID)
                iTimerID = null;   

                alert("上传结束,服务器处理中...");
            }
            // 上传结束
            else
            {
                PercentDone.style.width = "100%";        //设置进度条的百分比例
                if (iTimerID != null)
                    clearTimeout(iTimerID)
                iTimerID = null;   
                alert("上传结束");
            }
        }
        else
        {
            alert(oRoot.selectSingleNode("ErrorMessage").text);
            upload.location.href = "about:blank";
        }
    }

}

function CacelUpload()
{
    upload.location.href = "about:blank";
    if (iTimerID != null)
        clearTimeout(iTimerID)
    iTimerID = null;   
    bar1.style.display = '';
}

</script>

 
<base target="_blank">
<form name="myform" method="post" action="demo.asp" enctype="multipart/form-data" target="upload">
<h2>Asp无组件上传带进度条 </h2>
<HR>
上传测试:<BR>
<input type="file" name="filefield1">(请上传小于10MB的文件)<br>
<input type="button" value="上传" onclick="UploadData()">
<input type="button" value="取消上传" onclick="CacelUpload()"><br>
<div id=bar1 style="display:">
    <table border="0" width="100%">
      <tr>
        <td><b>传送:</b></td>
      </tr>
      <tr bgcolor="#999999">
        <td>
          <table border="0" width="" cellspacing="1" bgcolor="#0033FF" id="PercentDone">
            <tr>
              <td>&nbsp;</td>
            </tr>
          </table>
        </td>
      </tr>
      <tr>
        <td>
            <table border="0" cellpadding="0" cellspacing="0">
                <tr><td>总 大 小:&nbsp</td><td id="TotalSize"></td></tr>
                <tr><td>已经上传:&nbsp</td><td id="SizeCompleted"></td></tr>
                <tr><td>平均速率:</td><td id="TransferRate"></td></tr>
                <tr><td>使用时间:</td><td id="ElapsedTime"></td></tr>
                <tr><td>剩余时间:</td><td id="TimeLeft"></td></tr>
            </table>
        </td>
      </tr>
    </table>
</div>
<iframe name="upload" style="width:100%"></iframe>
</form>
<pre>
'-----------------------------------------------------
' 描述: Asp无组件上传带进度条
' 作者: 宝玉(<A HREF="http://blog.joycode.com/dotey">http://blog.joycode.com/dotey</A>)
' 链接: <A HREF="http://www.openlab.net.cn">开放实验室(西北工业大学民间BBS)</A>, <A HREF="http://blog.joycode.com">博客堂</A>, <A HREF="http://www.cnblogs.com">博客园</A>, <A HREF="http://www.51js.com">无忧脚本</A>
' 版本: 1.0
' 版权: 本作品可免费使用,但是请勿移除版权信息
' 下载: <A HREF="http://www.webuc.net/MyProject/upload/upload.rar">http://www.webuc.net/MyProject/upload/upload.rar</A>
' 推荐: China Community Server(<A HREF="http://www.CommunityServer.cn/">http://www.CommunityServer.cn/</A>),一个开源的Asp.Net社区系统,包含论坛、Blog、相册和留言版等程序
'-----------------------------------------------------
</pre>
</body>

</html>

分享到:
评论

相关推荐

    php实现大文件上传带进度条

    以上就是一个使用PHP和APC扩展实现大文件上传带进度条的基本流程。通过这种方法,我们可以避免一次性加载大文件,分块上传降低了服务器内存压力,同时也提供了良好的用户体验,用户可以看到文件上传的实时进度。需要...

    新 ASP无组件上传带进度条 (源码 + 实例)

    ASP无组件上传带进度条是一种在ASP(Active Server Pages)环境下实现文件上传并显示上传进度的技术,无需额外的服务器组件。这种技术对于提高用户体验尤其重要,因为它允许用户在上传大文件时了解进度,减少了用户...

    swfupload多文件上传带进度条实例

    **SWFUpload 多文件上传带进度条实例详解** SWFUpload 是一款开源的JavaScript库,专门用于在网页上实现文件的多选上传,并且支持显示上传进度条,为用户提供更好的交互体验。在这个实例中,我们将探讨如何在VS2012...

    layui文件上传带进度条显示.zip

    本资源"layui文件上传带进度条显示.zip"结合了`layui`与`PHP`,实现了文件上传过程中带有进度条的交互效果,提升了用户体验。 首先,我们要理解`layui`的文件上传组件是如何工作的。`layui`的上传组件基于HTML5的`...

    无组件上传带进度条asp版

    【标题】"无组件上传带进度条asp版"所涉及的知识点主要集中在ASP(Active Server Pages)编程语言中实现文件上传的功能,同时结合了进度条显示以提供用户友好的交互体验。在传统的ASP中,文件上传通常需要借助第三方...

    文件上传 带进度条 非常漂亮!

    #### 标题解析:“文件上传 带进度条 非常漂亮!” 标题强调了文件上传功能的一个关键特性——带有美观进度条的上传机制。这表明在进行文件传输时,用户能够直观地看到上传的进度,提供了一个更友好、更互动的用户...

    swfupload多文件上传带进度条javaweb项目

    **SwfUpload 多文件上传带进度条 JavaWeb 项目详解** SwfUpload 是一个流行的JavaScript库,它允许用户在浏览器端实现文件的批量上传,同时提供进度条展示上传进度,提高了用户体验。在这个JavaWeb项目中,...

    ASP无组件上传带进度条(源码+实例)

    ASP无组件上传带进度条是一种在ASP(Active Server Pages)环境中实现文件上传并显示上传进度的技术,它在不依赖任何额外服务器组件的情况下,为用户提供友好的上传体验。这个技术尤其适用于那些需要处理大文件上传...

    Asp无组件上传带进度条

    在ASP(Active Server Pages)开发中,实现无组件的文件上传并带有进度条功能是一项技术挑战,因为ASP本身并不直接支持这种高级特性。通常,我们需要借助JavaScript、Ajax和服务器端的脚本来完成这一任务。以下将...

    php 上传带进度条

    在PHP中实现文件上传带进度条的功能,是一个增强用户体验的重要技术。这通常涉及到前端与后端的协同工作,包括HTML5、JavaScript、AJAX以及PHP等技术。下面将详细讲解如何构建这样的系统。 首先,我们需要在HTML...

    web 大文件上传 带进度条

    本项目"web 大文件上传 带进度条"显然是针对这个需求提供的一种解决方案,通过ASP.NET技术实现。 首先,我们来分析一下项目中的主要文件: 1. `Default.aspx` 和 `upload.aspx`:这两个是ASP.NET的页面文件,分别...

    asp 无刷新上传 带进度条

    在ASP中实现无刷新上传并带有进度条的功能,可以极大提升用户体验,避免用户在文件上传过程中等待页面刷新,显示实时的上传进度能够让用户知道操作的状态。 首先,我们需要了解这个功能的实现原理。无刷新上传通常...

    Java 文件上传带进度条源码

    本示例中的"Java 文件上传带进度条源码"提供了一个具体的解决方案,适用于使用Tomcat7服务器和Java 7开发环境。 首先,我们需要理解文件上传的基本流程。在Web应用中,文件上传通常涉及到HTTP协议中的POST请求,...

    支持超大文件上传带进度条示例

    "支持超大文件上传带进度条示例"这个主题聚焦于如何在上传大文件时提供用户体验优化,即通过进度条来显示文件上传进度。这通常涉及到前端与后端的协同工作,以及对大文件处理的特殊技术策略。 首先,超大文件上传的...

    JAVA -jquery 文件上传带进度条

    在Java和jQuery的世界里,实现文件上传带进度条的功能是一项常见的需求,特别是在用户交互体验日益重要的今天。这个功能可以提供给用户一个实时反馈,让他们了解文件上传的状态,从而提升用户体验。接下来,我们将...

    jquery ajax上传 带进度条

    "jquery ajax上传 带进度条"这个主题就是关于如何在jQuery AJAX上传文件时展示进度反馈。 首先,jQuery本身并不直接支持文件上传的进度显示,但可以通过一些插件来实现,如Uploadify。Uploadify是一款强大的jQuery...

    struts 单文件上传和多文件上传带进度条

    本文将详细介绍如何在Struts中实现这两个功能,并带上传进度条。 首先,我们需要了解Struts中处理文件上传的基本原理。Struts2提供了一个`FileUpload`拦截器,用于处理文件上传请求。在Action类中,我们需要定义一...

    asp.net上传图片带进度条

    在ASP.NET中实现图片上传并显示进度条的功能是一项常见的需求,尤其在用户上传大体积图片时,进度条能提供良好的用户体验。以下将详细介绍如何在ASP.NET中构建这样的功能。 首先,我们需要理解上传过程的基本原理。...

    fileupload文件上传带进度条

    "fileupload文件上传带进度条"的实现是用户界面(UI)优化的重要部分,因为它提供了更好的用户体验,让用户能够实时了解文件上传的进度,减少了操作的不确定性。在这个主题中,我们将深入探讨如何实现单文件上传并带...

    asp.net文件上传带进度条

    在ASP.NET中实现文件上传带进度条的功能,通常涉及到AJAX技术,以便提供更好的用户体验。在传统的文件上传中,用户可能会遇到页面刷新或者长时间无响应的情况,而通过AJAX技术,我们可以实现异步文件上传,同时展示...

Global site tag (gtag.js) - Google Analytics