黑马程序员技术交流社区

标题: 【广州前端】-文件拖拽上传插件dropzoneJs [打印本页]

作者: 李盼盼老师    时间: 2018-4-12 15:53
标题: 【广州前端】-文件拖拽上传插件dropzoneJs
查看更多精彩前端资源




【简介】
         文件拖拽上传插件dropzone.js,提供 AJAX 异步文件上传功能,支持拖拽文件上传、支持最大文件大小、支持设置文件类型、支持预览上传结果,不依赖jQuery库。
dropzone.js的使用步骤】
1.     建立一个正式的上传form表单,并且给表单一个.dropzone的class
[HTML] 纯文本查看 复制代码
<form id="mydropzone" action="/upload.php" class="dropzone"></form>
就这样,Dropzone会自动找到.dropzone的表单form元素,并且通过action属性,上传到后台接收文件的程序,如upload.php,就像接受一个很普通的file input表单:
[HTML] 纯文本查看 复制代码
<input type="file" name="file" />
         然后,在你的upload.php中写上传代码
2.     引入dropzone.js
[HTML] 纯文本查看 复制代码
<script src="dropzone.min.js"></script>
然后什么都不用做了,打开浏览器,测试拖拽上传效果

【不使用from表单的情况】
有一种情况,我们不希望上传的html中有form表单,那么好,我们只要在html中放置一个div#mydropzone
[HTML] 纯文本查看 复制代码
<div id="mydropzone" class="dropzone"></div>
1.     配置一下js调用
[JavaScript] 纯文本查看 复制代码
var myDropzone = new Dropzone("div#mydropzone", { url: "upload.php"});
2.     如果您使用的是jquery,那么jQuery版的可以这样调用:
[JavaScript] 纯文本查看 复制代码
var myDropzone = new Dropzone("div#mydropzone", { url: "upload.php"});

【配置Dropzone
【翻译选项】
添加事件监听
如果你希望在一个事件发生时采取一些额外的操作,而不干扰 Dropzone 的默认行为,那么你应该通过添加事件监听器的办法对事件做出响应,而非重写默认事件函数。
重写默认事件函数的例子如下:
[JavaScript] 纯文本查看 复制代码
$("#dropz").dropzone({

    addedfile: function() {

        // actions...

    }

});
如果你重写默认事件函数,该事件发生时插件默认采取的动作将被覆盖。大多数情况下你仅仅想在事件发生时添加自己的行为,那么应该使用on方法。
jQuery 版本
[JavaScript] 纯文本查看 复制代码
$("#dropz").dropzone({

    init: function() {

        this.on("addedfile", function(file) {

            // actions...

        });

    }

});
非 jQuery 版本:
[JavaScript] 纯文本查看 复制代码
dropz.on("addedfile", function(file) {

    // actions...

});
【常用事件】
以下事件接收 file 为第一个参数
addedfile:添加了一个文件时发生。
removedfile:一个文件被移除时发生。你可以监听这个事件并手动从服务器删除这个文件。
uploadprogress:上传时按一定间隔发生这个事件。第二个参数为一个整数,表示进度,从 0 到 100。第三个参数是一个整数,表示发送到服务器的字节数。当一个上传结束时,Dropzone 保证会把进度设为 100。注意:这个函数可能被以同一个进度调用多次。
success:文件成功上传之后发生,第二个参数为服务器响应。
complete:当文件上传成功或失败之后发生。
canceled:当文件在上传时被取消的时候发生。
maxfilesreached:当文件数量达到最大时发生。
maxfilesexceeded:当文件数量超过限制时发生。
以下事件接收一个 file list 作为第一个参数(仅当uploadMultiple被设为true时才会发生)
successmultiple
completemultiple
cancelmultiple
【案例】
Css代码就不放上来了,可以由自己控制,主要演示js代码
[JavaScript] 纯文本查看 复制代码
<div class="dropz"></div>

<script>

    $(".dropz").dropzone({

        url: "handle-upload.php",

        addRemoveLinks: true,

        dictRemoveLinks: "x",

        dictCancelUpload: "x",

        maxFiles: 10,

        maxFilesize: 5,

        acceptedFiles: ".js",

        init: function() {

            this.on("success", function(file) {

                console.log("File " + file.name + "uploaded");

            });

            this.on("removedfile", function(file) {

                console.log("File " + file.name + "removed");

            });

        }

    });

</script>
【效果】




作者: tom19970323    时间: 2018-4-13 08:55
可以可以





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2