`
mzhj
  • 浏览: 228100 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用Jquery和BigFileUpload来实现大文件上传及进度条显示

 
阅读更多

实现方法:用到了高山来客 的bigfileupload组件,用高山来客的方法,弹出一个模式窗口,然后不停刷新获取进度,始终觉得体验感不好,于是想到用jquery来实现无刷新进度显示,因为提交页面后, 不能让其刷新页面,而是要不断地通过ajax获取progress.aspx返回的进度信息,所以用到了jquery.form的ajaxform提交。ajaxform提交后如果执行提交后的事件,比如在数据库里插入记录,还在调试中。

1、用到了jquery 的 progressbar 、form、MultFile及相关组件

    <script src="../../common/js/jquery-1.2.6.pack.js" type="text/javascript"></script>
    <script src="../../common/jqControl/packed/ui.core.packed.js" type="text/javascript"></script>
<!--FORM-->
    <script src="../../common/jqControl/ajax/jquery.form.js" type="text/javascript"></script>
<!--上传文件-->
    <script src="../../common/jqControl/upLoad/jquery.MultiFile.pack.js" type="text/javascript"></script>
<!--进度条-->
    <script src="../../common/jqControl/packed/ui.progressbar.packed.js" type="text/javascript"></script>
<!--对话框-->  
<!--我的JS -->  
    <link href="../../common/Css/jquery-ui-themeroller.css" rel="stylesheet" type="text/css" />
    <script src="../gadget/JS/uploadfile.js" type="text/javascript">

多文件上传

上传进度条显示

2.uploadfile.js代码如下:

$(function()
{
    var info = '<div style="display:none" id="uploadinfo">';
info += '<p>正在上传: <span id="uploadfilename"></span></p>';
info += '<p>上传速度: <span id="uploadrate"></span> </p>';
info += '<p>状态: <span id="uploadtitle"></span></p>';
info += '<p>预计剩余时间: <span id="uploadlefttime"></span></p>';
info += '<p>上传文件大小: <span id="uploadtotal"></span></p>';
info += '<p>已上传大小: <span id="uploadcurrent"></span></p>';
info += '<p><div  id="uploadprogressbar"></div></p>';
    info += '</div><div id="dialogsucc" > ';

    $("body").append(info);
    //进度条
    $("#uploadprogressbar").progressbar();
    //上传
    $('#fileupload').MultiFile();
   $('#btshow').click(function()
   {
      alert($("body").html());
   });
 
   //提交
$('#btnsubmit').click(function()
{
        $("#uploadForm").ajaxSubmit(
        {
            dataType:  'text',
            beforeSubmit: function(a,f,o)
            {
                startProgress();
            },
            async:false,
            success: function(data)
            {
              
                //$("#dialogsucc").text(data);
                //stopProgress();
                if(data.succ==1)
                {
                  
                   /* $("#dialogsucc").show();
                    $("#dialogsucc").dialog(
                    {
                        modal: true,
                        overlay:
                        {
                            opacity: 0.5,
                            background: "black"
                        }
                    }); */
                }
            },
            error:function(err)
            {
                alert(err);
            }
  });
});
 
});


function getProgress(){
    $.ajax({
       type: "post",
       dataType:"json",
       url: "uploadProgress.aspx",
       data: "UploadID=" + $("#UploadID").val(),
       success: function(data){
          
      $("#uploadprogressbar").progressbar("progress", data.percent);
      $("#uploadfilename").html(data.filename);
      $("#uploadrate").html(data.rate);
      $("#uploadtitle").html(data.info);
      $("#uploadlefttime").html(data.lefttime);
      $("#uploadtotal").html(data.total);
      $("#uploadcurrent").html(data.current);

      if(data.succ==-1){
       alert(data.errmsg);
      }  
      if (data.succ==0){
       setTimeout("getProgress()", 1000);
      }
      if (data.succ==1){
       return;
      }    
    
       },
       error:function(msg)
       {
            alert(msg);
       }
    }); 
   
}

function startProgress(){
$("#uploadinfo").show();
    setTimeout("getProgress()", 500);
}
function stopProgress()
{
$("#uploadinfo").hide();
}

3:progress.aspx代码如下:

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {

            string s = "{";
            UploadContext upload = UploadContextFactory.GetUploadContext(Request["UploadID"]);
          
            //初始化
            if (upload.Status == uploadStatus.Initializing)
            {
                s += responeJSON(upload, "0", "");
            }

            if (upload.Status == uploadStatus.Uploading)
            {
                s += responeJSON(upload, "0", "");
            }

            if (upload.Status == uploadStatus.Complete)
            {
                s += responeJSON(upload, "1", "");
            }

            if (upload.Status == uploadStatus.HasError)
            {
                s += responeJSON(upload, "-1", "");
            }
            s += "}";

            Response.Write(s);
        }
        catch (Exception err)
        {
            //throw err;
            Response.Write("{'info':'" + err.Message.Replace("'", "") + "','succ':-1}");
        }
      
    }

    private string responeJSON(UploadContext upload, string succ,string errmsg)
    {
        string s = "";
        s += "'info':'" + upload.FormatStatus + "'" ;
        s += ",'percent':'" + Convert.ToInt32((upload.Readedlength * 100.0 / upload.TotalLength)).ToString() + "'";
        s += ",'current':'" + (upload.Readedlength/1024).ToString() + "KB'";
        s += ",'total':'" + (upload.TotalLength/1024).ToString() + "KB'";
        s += ",'rate':'" + upload.FormatRatio + "'";
        s += ",'filename':'" + upload.CurrentFile + "'";
        s += ",'cancel_upload':" + 0 ;
        s += ",'lefttime':'" + upload.LeftTime + "'";
        s += ",'succ':" + succ;
        s += ",'errmsg':'"  + errmsg  +"'";

        return s;
    }

4.ajaxForm执行后,能够正常运行,那上传文件后,我如何执行其它操作,研究完了再发

分享到:
评论

相关推荐

    Jquery和BigFileUpload实现大文件上传及进度条显示

    在本文中,我们将深入探讨如何使用Jquery和BigFileUpload插件实现大文件上传并同时显示进度条。这个功能在现代Web应用中非常重要,因为它提供了用户友好的交互体验,特别是对于那些需要上传大量数据的场景。 首先,...

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

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

    JAVA -jquery 文件上传带进度条

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

    JQuery和Servlet实现上传进度条

    以上就是使用JQuery和Servlet实现上传进度条的基本原理和实现流程。这个过程涉及到的技术点包括前端的JQuery交互、HTML5 File API的使用,以及后端的Servlet文件处理,这些都是现代Web开发中的基础技能。通过掌握...

    【ASP.NET编程知识】asp.net单文件带进度条上传的解决方案.docx

    在本文中,我们使用jquery的ajax方法来实现文件上传,并且使用jquery-ui库来实现进度条的显示。 知识点2:使用ASP.NET缓存机制实现文件上传进度条显示 在本文中,我们使用ASP.NET缓存机制来实现文件上传进度条的...

    jquery文件上传插件(多文件选择、带进度条 ,图片预览)

    本教程将深入讲解如何使用jQuery实现一个功能丰富的文件上传插件,包括多文件选择、进度条显示和图片预览。 首先,我们需要引入jQuery库和WebUploader插件。WebUploader是由阿里团队开发的一款优秀的文件上传组件,...

    jsp+JQuery多文件上传进度条显示(单选文件)

    在本文中,我们将深入探讨如何使用JSP和jQuery实现一个简单的单选文件上传功能,并结合进度条显示上传进度。这是一个前端部分的实现,而后端部分需要根据实际项目需求自行完成。 首先,我们要明白JSP(JavaServer ...

    jquery 进度条

    本篇文章将深入探讨如何使用jQuery来创建和定制进度条,以及它可能涉及到的关键知识点。 1. **jQuery基础知识** 在介绍进度条插件之前,我们需要了解jQuery的基本用法。jQuery简化了DOM操作、事件处理、动画效果和...

    文件上传(进度条显示)源码20130410

    "文件上传(进度条显示)源码20130410"这个资源提供了一个实现文件上传并带有进度条显示的功能,这对于提高用户体验至关重要。用户在上传大文件时,能够看到进度有助于他们了解操作的状态,避免了对系统是否响应的疑惑...

    js实现文件上传进度条

    在JavaScript中实现文件上传进度条是一项重要的用户交互优化工作,它可以显著提升用户体验,尤其是在处理大文件上传时。本文将深入探讨如何实现这一功能,主要涉及以下几个关键知识点: 1. **进度条的实现**:...

    struts2+jquery多文件上传显示进度条,可直接运行(非常强大)

    Struts2和jQuery结合实现的多文件上传功能是一种常见的Web开发技术,特别是在处理大量数据时,用户需要上传多个文件的情况。这个项目的核心是利用Struts2的Action支持和jQuery的AJAX功能,以及一个用于展示进度条的...

    jquery prototyoe文件上传(页面同时显示进度条,文件大小,上传信息)

    本篇文章将详细讲解如何利用jQuery和Prototype实现文件上传,并在页面上实时显示进度条、文件大小以及上传信息。 首先,jQuery的`$.ajax()`方法或`$.upload()`插件可以用来处理文件上传。`$.ajax()`支持`xhr.upload...

    c# 上传文件进度条

    一种常用的jQuery插件是`jQuery File Upload`,它支持多文件选择、文件预览、进度条显示、取消上传等功能。要使用该插件,首先在HTML中引入jQuery、jQuery UI和jQuery File Upload的相关脚本和样式文件。 2. **HTML...

    jquery 实现的进度条插件

    本篇文章将详细讲解如何利用jQuery实现一个进度条插件,以及其在程序进度显示和AJAX文件上传中的应用。 首先,进度条插件的核心功能是动态展示一个过程的完成度,它可以是一个下载、上传、渲染或其他耗时操作的状态...

    .net大文件上传显示进度条

    总的来说,这个示例是一个很好的学习资源,它展示了如何在.NET环境下使用Ajax和分块上传技术来处理大文件,并实时显示上传进度,这对于提升用户体验非常有帮助。通过深入研究,你可以进一步优化这个解决方案,比如...

    带进度条的文件上传特效,jquery

    在IT行业中,文件上传是网页应用中常见的功能之一,尤其在大数据时代,用户可能需要上传大量文件,因此提供良好的用户体验,如进度条显示和详细上传状态,变得至关重要。本话题聚焦于“带进度条的文件上传特效”,...

    jquery_uploadify实现的下载进度条

    jQuery Uploadify是一个强大的JavaScript库,能够提供丰富的文件上传功能,包括实时的下载进度条,极大地提升了用户体验。本文将深入探讨如何在Struts2框架下,利用jQuery Uploadify实现下载进度条的功能。 首先,...

    表单异步提交并实现文件上传、进度条显示等

    jquery.form.js是一款jquery插件,通过该插件并配合jquery-3.3.1.js强大的选择器功能,我们可以非常简单的实现表单的异步提交,并实现文件上传、进度条显示等等,我曾使用两者配合异步实现图片的上传及回显等功能。

    jquery 上传,批量上传 进度条显示

    在本篇文章中,我们将深入探讨如何利用 jQuery 实现文件上传,特别是批量上传和进度条显示的技术细节。 首先,我们需要一个支持多文件选择的 HTML5 `&lt;input type="file"&gt;` 元素,通过设置 `multiple` 属性允许用户...

Global site tag (gtag.js) - Google Analytics