jq拖拽文件实现进度条

js拖拽文件实现进度条

最近遇到个需求,浏览器拖拽功能,并且实现显示进度条

拖拽盒子省略了,自定义就行

// 禁止浏览器的默认拖拽打开文件的事件 ,dropZone 拖拽区域盒子
			var dropEle = document.querySelector('#dropZone');
            dropEle.addEventListener('drop', function (e) {
                //
            }, false);

            document.addEventListener('drop', function (e) {
                //
            }, false);

            dropEle.addEventListener("dragenter", function (e) {
                e.preventDefault();
                e.stopPropagation();
            }, false);

            dropZone.addEventListener("dragover", function (e) {
                e.preventDefault();
                e.stopPropagation();
            }, false);

            dropZone.addEventListener("dragleave", function (e) {
                e.preventDefault();
                e.stopPropagation();
            }, false);

            dropZone.addEventListener("drop", function (e) {
                e.preventDefault();
                e.stopPropagation();
                // 拖拽进入的事件
                var files = e.dataTransfer.files
      
                var filesName = files[0].name;
                var extStart = filesName.lastIndexOf(".");
                var ext = filesName.substring(extStart,filesName.length).toUpperCase();
                    $('#filename').html(filesName)
					// 文件拖拽进入触发test事件
                    test(files);

                    i++;
                }
                // 进度条出现
                $("#example1").show();
            })

            function test(a) {
                var formData = new FormData()
                formData.append("fileName", a[0]);
                $.ajax({
                    url: "***",
                    type: "POST",
                    data: formData,
                    dataType: "JSON",
                    cache: false,
                    processData: false,
                    contentType: false,
                    xhr: function () {
                        var xhr = $.ajaxSettings.xhr();
                        if (xhr.upload) {
                            xhr.upload.onprogress = function (progress) {
                                if (progress.lengthComputable) {
                                    let str = progress.loaded / progress.total * 100
                                    // 此处获取到了上传进度百分比str。就可以做css操作了
                                    if(str == 100 ){
                                        $("#example1").hide();
                                    }  
                                }
                            };
                            xhr.upload.onloadstart = function () {
                                console.log('开始');
                            };
                        }
                        // 一定记得要return xhr 不然后面就没有xhr用了
                        return xhr;
                    },
                    success:function(val){
						// 此处做判断语句
					}
                })
            };
            ```

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值