jq上传进度条

jQuery拖拽上传现在,让我们把学到的东西应用到实践中,来实现一个可拖拽上传文件的功能。我们需要几个库:jquery.js用来作底层库,jquery.ui.js用来构建进度条,jquery.drop.js用来提供抽象的拖拽API,以及jquery.upload.js用来作Ajax上传。我们所有的逻辑都将放在jQuery.ready()中,因此程序会在DOM树构建完成后运行:
//= require <jquery>
//= require <jquery.ui>
//= require <jquery.drop>
//= require <jquery.upload>
jQuery.ready(function($) {
    /* ... */
});创建拖拽目标区域我们想把文件拖拽到#drop元素上,首先要把它转换为释放拖拽的区域。这就需要绑定drop事件,撤销事件并遍历释放拖拽的文件列表,然后将它们传入uploadFile()函数:
var view = $("#drop");
view.dropArea();
view.bind("drop",
function(e) {
    e.stopPropagation();
    e.preventDefault();
    var files = e.originalEvent.dataTransfer.files;
    for (var i = 0; i < files.length; i++) uploadFile(files[i]);
    return false;
});
95|107上传文件现在来看uploadFile()函数——“让我们见证奇迹发生的时刻!”我们使用jquery.upload.js中的$.upload()函数来发送Ajax上传请求到服务器。然后监听请求的上传进度事件并更新jQuery UI进度条。当上传完成时,我们即刻通知用户上传已经完成,并将元素删除。
var uploadFile = function(file) {
    var element = $("<div />");
    element.text(file.fileName);
    var bar = $("<div />");
    element.append(bar);
    $("#progress").append(element);
    var onProgress = function(e) {
        var per = Math.round((e.position / e.total) * 100);
        bar.progressbar({
            value: per
        });
    };
    var onSuccess = function() {
        element.text("Complete");
        element.delay(1000).fade();
    };
    $.upload("/uploads", file, {
        upload: {
            progress: onProgress
        },
        success: onSuccess
    });
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值