分片上传—webloader

news2025/1/15 23:28:07

最近研究大文件上传方案的时候偶然间发现的一个百度开源的工具:webloader,用了一下,确实还不错,下面带着大家一起使用一下。

1.引入资源

使用Web Uploader文件上传需要引入三种资源:JS, CSS, SWF

所以我们需要先下载下来,点击此处下载

如果不想下载也没关系,文末有源代码地址,可以将这个项目下载下来,而且前后端都是独立的,所以也无需多虑。

在这里插入图片描述

然后找到我们所需要的三个文件,放到相应的目录

  • webuploader.css
  • webuploader.min.js
  • Uploader.swf

在这里插入图片描述

在这里插入图片描述

页面引入

<link rel="stylesheet" type="text/css" href="css/webuploader.css">
<script type="text/javascript" src="js/webuploader.min.js"></script>

为了提升阅读体验,本文只贴出核心代码,完整代码可以自行到文末下载。

Html部分

首先准备dom结构,包含存放文件信息的容器、选择按钮和上传按钮三个部分。

  <div id="uploader" class="wu-example">
        <!--用来存放文件信息-->
        <div id="thelist" class="uploader-list"></div>
        <div class="btns">
            <div id="picker">选择大文件</div>
            <button id="ctlBtn" class="btn btn-default">开始上传</button>
        </div>
    </div>

初始化Web Uploader

具体说明,请看一下代码中的注释部分。

 // 实例化
        var uploader = WebUploader.create({
            pick: {
                id: '#picker',
                label: '点击选择文件'
            },
            formData: {
                uid: 0,
                md5: '',
                chunkSize: chunkSize
            },
            //dnd: '#dndArea',
            //paste: '#uploader',
            swf: 'js/Uploader.swf',
            chunked: true,
            chunkSize: chunkSize, // 字节 1M分块
            threads: 3,
            server: 'index/fileUpload',
            auto: false,

            // 禁掉全局的拖拽功能。这样不会出现图片拖进页面的时候,把图片打开。
            disableGlobalDnd: true,
            fileNumLimit: 1024,
            fileSizeLimit: 1024 * 1024 * 1024, // 200 M
            fileSingleSizeLimit: 1024 * 1024 * 1024 // 50 M
        });

显示用户选择

由于webuploader不处理UI逻辑,所以需要去监听fileQueued事件来实现。

// 当有文件被添加进队列的时候
        uploader.on('fileQueued', function(file) {
            console.log("fileQueued");
            $thelist.append('<div id="' + file.id + '" class="item">' +
                '<h4 class="info">' + file.name + '</h4>' +
                '<p class="state">等待上传...</p>' +
                '</div>');
        });

文件上传进度

文件上传中,Web Uploader会对外派送uploadProgress事件,其中包含文件对象和该文件当前上传进度。

uploader.on('uploadProgress', function(file, percentage) {
            getProgressBar(file, percentage, "FILE", "上传进度");
        });

文件成功、失败处理

文件上传失败会派送uploadError事件,成功则派送uploadSuccess事件。不管成功或者失败,在文件上传完后都会触发uploadComplete事件。

  // 上传返回结果
        uploader.on('uploadSuccess', function(file) {
            var text = '已上传';
            if (file.pass) {
                text = "文件妙传功能,文件已上传。"
            }
            $('#' + file.id).find('p.state').text(text);
        });
        uploader.on('uploadError', function(file) {
            $('#' + file.id).find('p.state').text('上传出错');
        });
        uploader.on('uploadComplete', function(file) {
            // 隐藏进度条
            // fadeOutProgress(file, 'MD5');
            // fadeOutProgress(file, 'FILE');
        });

最终效果如下:
在这里插入图片描述

项目git地址:https://gitee.com/ninesuntec/large-file-upload/tree/master/font


相关文章推荐:

  • 《Spring Boot超大文件上传,实现秒传》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

tomcat学习笔记

1.tomcat使用的方法有很多种&#xff0c;我这边使用的是直接解压使用的版本 tomcat 9.0.45版本免安装版下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1c6NN2Z-McuN4uw6JGWZmrA?pwdrl7t 提取码&#xff1a;rl7t 2.启动方式是在bin目录下找到startup.bat运行&…

用HTML+CSS做一个漂亮简单的花店网页【免费的学生网页设计成品】

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

学习笔记-4-ANN-1-Preliminaries

细节内容请关注微信公众号&#xff1a;运筹优化与数据科学 ID: pomelo_tree_opt Outline 1. ANN与SVM 2. ANN的数学基础 3. ANN history 4. Deep neural network ------------------------------ 1. ANN与SVM的区别 SVM, SVR中有很多数学推导的过程&#xff0c; 例如pri…

Spring 使用指南 ~ 3、Spring 中 bean 的生命周期详解

Spring 中 bean 的生命周期详解 一、bean 的生命周期图解 二、bean 创建时使用 Spring 的资源 实现 aware 类型接口的 bean&#xff0c;可以在 bean 实例化的时候获取到一些相对应的资源&#xff0c;如实现 BeanNameAware 的 bean&#xff0c;就可以获取到 beanName。Spring …

[附源码]JAVA毕业设计无人驾驶汽车管理系统(系统+LW)

[附源码]JAVA毕业设计无人驾驶汽车管理系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目…

[附源码]JAVA毕业设计西藏民族大学论文管理系统(系统+LW)

[附源码]JAVA毕业设计西藏民族大学论文管理系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 …

KubeSphere v3.3.1 权限控制详解

作者&#xff1a;周文浩&#xff0c;青云科技研发工程师&#xff0c;KubeSphere Maintainer。热爱云原生&#xff0c;热爱开源&#xff0c;目前负责 KubeSphere 权限控制的开发与维护。 KubeSphere 3.3.1 已经发布一个多月了。 3.3.1 版本对于 KubeSphere 来说只是一个小的 Pat…

ADI Blackfin DSP处理器-BF533的开发详解10:SPORT-IIS口驱动和应用(含源代码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 接口功能介绍 ADSP-BF533上有两个 SPORT 口&#xff0c;SPORT&#xff08;synchronous serial ports&#xff09;接口是 ADSP-BF53x 上速度最快的…

执法仪物联卡在哪里采购靠谱

在这个万物互联的时代&#xff0c;针对于企业设备联网的物联卡就显得格外重要了&#xff0c;而共享单车&#xff0c;移动支付&#xff0c;智慧城市&#xff0c;自动售卖机等企业采购物联卡会面临着各种问题&#xff0c;低价陷阱&#xff0c;流量虚假&#xff0c;管理混乱&#…

基于LSTM递归神经网络的多特征电能负荷预测(Python代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

Kubernetes 系统化学习之 集群安全篇(七)

Kubernetes 作为一个分布式集群管理的工具&#xff0c;保证集群的安全性是其一个重要的任务。API Server 是集群内部各个组件通信的中介&#xff0c;也是外部控制的入口&#xff0c;所以 K8s 的安全机制就是围绕保护 API Server 来设计的。K8s 使用了认证&#xff08;Authentic…

计算机毕业设计springboot+vue基本微信小程序的大学生竞赛信息发布与报名小程序

项目介绍 大学生竞赛是提升大学生综合能力和专业素质的重要手段和途径,越来越受到广大高校师生的关注与重视。大学生学科竞赛活动不仅有利于提升大学生的专业素养,也有利于提升大学生的创新、实践能力、竞争意识与团队精神。 各类学科竞赛汇总、信息发布、信息收集、报名、备赛…

针对前端项目node版本问题导致依赖安装异常的处理办法

Mac如何切换版本 前端项目开发过程中&#xff0c;多人开发会遇到由于node版本不同造成的依赖不适配。 比如: node 16.xx 大多都会遇到依赖版本与node版本不适配导致安装报错等问题&#xff0c;并且你不管如何更新还是使用稳定版本的node.js都不起作用&#xff0c;此时你需要修…

看直播怎么录屏?这2个方法,一看就会!

​现在很多人在斗鱼、虎牙、斗鱼、腾讯课堂等平台上直播&#xff0c;有些人在视频聊天平台上&#xff0c;如微信上直播。我们如何保存这些直播视频&#xff1f;看直播怎么录屏&#xff1f;今天小编就分享2个方法&#xff0c;教你如何看直播的同时录屏。 看直播怎么录屏方法一&a…

Font字体属性

Font字体属性 源代码 font font属性用于定义字体系列、大小、粗细、和文字样式(如斜体) font-family font-family属性用于定义文本字体&#xff0c;多个字体用 ” , ” 号隔开&#xff0c;一般情况下&#xff0c;有空格隔开的多个单词组成的字体&a…

Eziriz .NET Reactor保护NET代码

Eziriz .NET Reactor保护NET代码 NET Reactor软件是一个简单而小巧的工具&#xff0c;但对保护NET代码非常强大。会的。编程数据可以通过使用本程序、编写的代码和程序来保护&#xff0c;并禁止复制和使用它们。 Eziriz.NET Reactor软件的功能和特点&#xff1a; -支持收集和模…

MODBUS-ASCII协议

MODBUS协议在RS485总线上有RTU和ASCII两种传输格式。 其中ASCII协议应用比较少&#xff0c;主要还是以RTU格式为主。 相比较于RTU的2进制传输&#xff0c;ASCII使用的是文本传输&#xff0c;整个数据包都是可打印字符。 下面是示例&#xff1a; :010300000001FB\r\n 帧头是冒…

GWAS:使用R,比较GLM和MLM对假阳性的控制差异(复刻Nature genetics 图)

目录 1.数据准备 2.代码 如果想知道横纵坐标设置的原理&#xff0c;移步这篇超级棒的文章&#xff01; 我们来复刻如下这张2016年发表在Nature genetics上的一篇文章中比较GLM和MLM的QQ plot&#xff01; 参考文献&#xff1a; Genetic variation in ZmVPP1 contributes t…

Python爬虫项目100例

前言 Python爬虫项目100例&#xff08;一&#xff09;&#xff1a;入门级 CentOS环境安装 和谐图网站爬取 美空网数据爬取 美空网未登录图片爬取 27270图片爬取 蜂鸟网图片爬取之一 蜂鸟网图片爬取之二 蜂鸟网图片爬取之三 河北阳光理政投诉板块 Pyt图虫网多线程爬取…