jQuery实现文件上传进度条效果

最近呢,老大让做一个进度条的效果出来,这个之前还真没做过。刚好这周没什么东西了,就拿这个来充一下数吧。

文件上传,得先准备一个“按钮”:

这个看上去还是不错的吧,实现也是很简单的:

<span class="upload-span">开始上传文件</span>
<button>太丑了,就用span来做了,可控性强。添加点css:

.upload-span{
    display: inline-block;
    width: 120px;
    height: 40px;
    color: #FFFFFF;
    text-align: center;
    line-height: 40px;
    background-color: blue;
    border: 2px solid blue;
    border-radius:5px;
    cursor: pointer;
    letter-spacing: 2px;
}
当点击就会触发上传效果,之后添加事件。
逼真一点,得再加一个遮罩和一个显示进度条的控件,点击span后,效果大概是这样子的:

  <div class="upload-mask"></div>
    <div class="upload-component">
        <div class="upload-close">
            <span class="upload-close-span">关闭</span>
        </div>
        <div class="upload-content">
            <div class="progress">
                <span class="upload-text"></span>
                <span class="uploaded"></span>
            </div>
            <div class="confirm-cancel">
                <span class="confirm">确认</span>
                <span class="cancel">取消</span>
            </div>
        </div>
   </div>
加点css上去:

.upload-mask{
    position: absolute;
    top: 0;
    left: 0;
    z-index: 9;
    width: 100%;
    height: 100%;
    background-color: rgba(84,84,84,0.3);
    display: none;
}
.upload-component{
    position: absolute;
    z-index: 99;
    top: 50%;
    left: 50%;
    margin-left: -120px;
    margin-top: -60px;
    width: 240px;
    height: 120px;
    background-color: #FFFFFF;
    display:none;
}
.upload-close{
    position: relative;
    height: 30px;
    background-color: rgb(234,234,234);
}
.upload-close span{
    position: absolute;
    right: 15px;
    line-height: 30px;
    cursor: pointer;
}
.upload-content,.confirm-cancel{
    margin-top: 15px;
}
.progress{
    position:relative;
    width:90%;
    height:22px;
    margin-left: 4.88888%;
    text-align: center;
    line-height: 22px;
    /*background-color: blue;*/
    border:1px solid #ccc;
}
.upload-text{
    position:absolute;
    z-index: 99999;
    color:red;
}
.uploaded{
    position:absolute;
    left:0;
    z-index: 9999;
    width:0%;
    height:100%;
    background-color: blue;
    color:#FFFFFF;
}
.confirm-cancel span{
    display:inline-block;
    width:60px;
    height:30px;
    line-height: 30px;
    text-align: center;
    /*cursor:pointer;*/
    background-color:#ccc;
    cursor:wait;
}
.confirm{
    /*background-color: rgb(111,197,293);*/
    margin-left:40%;
}
.cancel{
    /*background-color: rgb(175,194,211);*/
    margin-left: 10px;
}
为了模拟进度的显示,在这里用了两个span:

<div class="progress">
    <span class="upload-text"></span>
    <span class="uploaded"></span>
</div>
上面一个是用来显示百分比的,下面一个用来填色的:

.upload-text{
    position:absolute;
    z-index: 99999;
    color:red;
}
.uploaded{
    position:absolute;
    left:0;
    z-index: 9999;
    width:0%;
    height:100%;
    background-color: blue;
    color:#FFFFFF;
}
为了逼真,给填色的span设置背景色,其宽度就是进度的百分比,最后就用js来模拟进度的变化了:

    // 模拟进度
    function progressBar() {
        var max = 100;
        var init = 0;
        var uploaded;
        var test = setInterval(function() {
            init += 10;
            uploaded = parseInt((init / max * 100)) + '%';
            $uploadTextSpan.text(uploaded).next().css({
    width:uploaded
   });
   if (init === 100) {
    clearInterval(test);
    $uploadTextSpan.text('上传完成');
    $('.confirm-cancel span').css({
     cursor:'pointer'
    });
    $('.confirm').css({
     backgroundColor:'rgb(111,197,293)'
    });
    $('.cancel').css({
     backgroundColor:'rgb(175,194,211)'
    })
    $closeConfirmCancel.on('click',closeConfirmCancel);
   }
   else { 
    $closeConfirmCancel.off('click',closeConfirmCancel);
    $('.upload-close-span').on('click',function(){
     clearInterval(test);
     closeConfirmCancel();
    });
    $uploadMask.on('click',function() {
                    clearInterval(test);
                    closeConfirmCancel();
                })
            }
        },1000);
    }

时间: 2024-10-22 07:52:42

jQuery实现文件上传进度条效果的相关文章

jQuery实现简单的文件上传进度条效果_jquery

本文实例讲述了jQuery实现文件上传进度条效果的代码.分享给大家供大家参考.具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>upload</title> <link rel="stylesheet" type="text/css" href=&quo

HTML5 Ajax文件上传进度条如何显示_AJAX相关

原本打算使用jquery插件进行异步文件上传,比如uploadfy但是需要额外的支持,也有人用iframe模仿异步上传机制,感觉都比较别扭.因为项目不考虑低版本浏览器,所以决定用html5实现.下面只是一个简单的demo,具体样式需要自己去做. 后台基于strut2进行文件处理,具体因项目而定.只是要注意设置文件大小的限制.  <constant name="struts.multipart.maxSize" value="52428800"/>这个配置

PHP利用APC模块实现文件上传进度条的方法_php技巧

本文实例讲述了PHP利用APC模块实现文件上传进度条的方法.分享给大家供大家参考.具体分析如下: 以前的php5.2之前的版本是不能可使用APC模块的,因为之前的压根就没有这个APC模块,如果想使用APC模块实现上传进度条我们必须是php5.2或更高版本. 从5.2开始APC加入了一个叫APC_UPLOAD_PROGRESS的东东,解决了困扰大家已久的进度条问题.并且它把原来的上传时把临时文件全部缓存到内存改成了当临时文件达到设定值时就自动保存到硬盘,有效地改善了内存利用状况. 它的作用原理是在

PHP中使用Session配合Javascript实现文件上传进度条功能_php技巧

Web应用中常需要提供文件上传的功能.典型的场景包括用户头像上传.相册图片上传等.当需要上传的文件比较大的时候,提供一个显示上传进度的进度条就很有必要了. 在PHP 5.4以前,实现这样的进度条并不容易,主要有三种方法: 1.使用Flash, Java, ActiveX 2.使用PHP的APC扩展 3.使用HTML5的File API 第一种方法依赖第三方的浏览器插件,通用性不足,且易带来安全隐患.不过由于Flash的使用比较广泛,因此还是有很多网站使用Flash作为解决方案. 第二种方法的不足

PHP Session和Javascript实现文件上传进度条

在PHP 5.4以前,实现这样的进度条并不容易,主要有三种方法: 1.使用Flash, Java, ActiveX 2.使用PHP的APC扩展 3.使用HTML5的File API 第一种方法依赖第三方的浏览器插件,通用性不足,且易带来安全隐患.不过由于Flash的使用比较广泛,因此还是有很多网站使用Flash作为解决方案. 第二种方法的不足在于,它需要安装PHP的APC扩展库,要求用户能够控制服务器端的配置.另外,如果安装APC仅仅是为了实现一个上传进度条,那么显然有点杀鸡用牛刀的意思. 第三

asp.net 文件上传进度条实现代码

asp教程.net 文件上传进度条实现代码 index.htm就是文件上传页面,提交form给uploadhandler目录下的default.aspx,以实现文件上传. progresshandler目录下三个文件为abort.ashx.genericguid.ashx,handler.ashx功能分别为:根据guid取消正在上传的文件,生成guid,根据guid获取上传信息. 第一步:建立index.htm页面,这个上传页面,需要注意的就是需要一个隐藏的iframe,并且名字为form提交的

PHP文件上传进度条基于Session与Javascript实现

下面我们就详细介绍一下 PHP 5.4 的这个 session.upload_progress 新特性. 原理介绍 当浏览器向服务器端上传一个文件时,PHP将会把此次文件上传的详细信息(如上传时间.上传进度等)存储在session当中.然后,随着上传的进行,周期性的更新session中的信息.这样,浏览器端就可以使用Ajax周期性的请求一个服务器端脚本,由该脚本返回session中的进度信息:浏览器端的Javascript即可根据这些信息显示/更新进度条了. 那么,文件上传信息具体是如何存储的?

服务器-我这样做asp.net异步文件上传进度条

问题描述 我这样做asp.net异步文件上传进度条 前台两个请求 1.上传文件的请求 2.获取上传进度的请求 1. $("#ufrm").ajaxSubmit({ url: "ReceivFile.ashx", type: "post", success: function (data) { ... 2. $.ajax({ type: "post", url: "Filepro.aspx", data: {

php ajax实现文件上传进度条_php技巧

本实例是关于php文件上传时进度条的实现,主要采用ajax技术,另外还运用了html5,有需要的朋友可以研究一下. 本实例有两个文件: upload_form.html: <!DOCTYPE html> <html> <head> <script> function _(el){ return document.getElementById(el); } function uploadFile(){ var file = _("file1"