知识 分享 互助 懒人建站

    懒人建站专注于网页素材下载,提供网站模板、网页设计、ps素材、图片素材等,服务于【个人站长】【网页设计师】和【web开发从业者】的代码素材与设计素材网站。

    懒人建站提供网页素材下载、网站模板
    知识 分享 互助!

    文件拖拽上传插件dropzone.js

    作者:佳明妈 来源:郑州网站设计 2016-11-09 人气:
    文件拖拽上传插件dropzone.js,提供 AJAX 异步文件上传功能,支持拖拽文件上传、支持最大文件大小、支持设置文件类型、支持预览上传结果,不依赖jQuery库。

    文件拖拽上传插件dropzone.js,提供 AJAX 异步文件上传功能,支持拖拽文件上传、支持最大文件大小、支持设置文件类型、支持预览上传结果,不依赖jQuery库。

    文件拖拽上传插件dropzone.js的使用

    建立一个正式的上传form表单,并且给表单一个.dropzone的class

    <form id="mydropzone" action="/upload.php" class="dropzone"></form>

    就这样,Dropzone会自动找到.dropzone的表单form元素,并且通过action属性,上传到后台接收文件的程序,如upload.php,就像接受一个很普通的file input表单:

    <input type="file" name="file" />

    然后,在你的upload.php中写上传代码,Dropzone官网下载的只有js代码,没有后台的上传代码,不过,helloweba.com为您提供了php版的完整上传实例代码,欢迎下载源码。

    引入dropzone.js

    <script src="dropzone.min.js"></script>

    然后什么都不用做了,打开浏览器,测试拖拽上传效果。当然样式你可以自己写,也可以参照我们的实例代码。

    还有一种情况,我们不希望上传的html中有form表单,那么好,我们只要在html中放置一个div#mydropzone

    <div id="mydropzone" class="dropzone"></div>

    配置一下js调用

    var myDropzone = new Dropzone("div#mydropzone", { url: "upload.php"});

    如果您使用的是jquery,那么jQuery版的可以这样调用:

     $("#dropz").dropzone({ 
        url: "upload.php" 
     })

    运行你的网页,是不是一样可以看到上传效果。

    配置Dropzone

    Dropzone的特色就在于非常灵活,提供了许多可选项、事件等。下面是Dropzone几个常用的配置项。

    url:最重要的参数,指明了文件提交到哪个页面。

    method:默认为post,如果需要,可以改为put。

    paramName:相当于<input>元素的name属性,默认为file。

    maxFilesize:最大文件大小,单位是 MB。

    maxFiles:默认为null,可以指定为一个数值,限制最多文件数量。

    addRemoveLinks:默认false。如果设为true,则会给文件添加一个删除链接。

    acceptedFiles:指明允许上传的文件类型,格式是逗号分隔的 MIME type 或者扩展名。例如:image/*,application/pdf,.psd,.obj

    uploadMultiple:指明是否允许 Dropzone 一次提交多个文件。默认为false。如果设为true,则相当于 HTML 表单添加multiple属性。

    headers:如果设定,则会作为额外的 header 信息发送到服务器。例如:{"custom-header": "value"}

    init:一个函数,在 Dropzone 初始化的时候调用,可以用来添加自己的事件监听器。

    forceFallback:Fallback 是一种机制,当浏览器不支持此插件时,提供一个备选方案。默认为false。如果设为true,则强制 fallback。

    fallback:一个函数,如果浏览器不支持此插件则调用。

    翻译选项

    • dictDefaultMessage:没有任何文件被添加的时候的提示文本。

    • dictFallbackMessage:Fallback 情况下的提示文本。

    • dictInvalidInputType:文件类型被拒绝时的提示文本。

    • dictFileTooBig:文件大小过大时的提示文本。

    • dictCancelUpload:取消上传链接的文本。

    • dictCancelUploadConfirmation:取消上传确认信息的文本。

    • dictRemoveFile:移除文件链接的文本。

    • dictMaxFilesExceeded:超过最大文件数量的提示文本。

    添加事件监听

    如果你希望在一个事件发生时采取一些额外的操作,而不干扰 Dropzone 的默认行为,那么你应该通过添加事件监听器的办法对事件做出响应,而非重写默认事件函数。

    重写默认事件函数的例子如下:

    $("#dropz").dropzone({
        addedfile: function() {
            // actions...
        }
    });

    如果你重写默认事件函数,该事件发生时插件默认采取的动作将被覆盖。大多数情况下你仅仅想在事件发生时添加自己的行为,那么应该使用on方法。

    jQuery 版本:

    $("#dropz").dropzone({
        init: function() {
            this.on("addedfile", function(file) {
                // actions...
            });
        }
    });

    非 jQuery 版本:

    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

    特殊事件

    • totaluploadprogress:第一个参数为总上传进度,第二个参数为总字节数,第三个参数为总上传字节数。

    例子

    这里我使用上面的选项、事件等写了一个例子,供参考:

    <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>

    外观

    Dropzone 下载之后没有自带任何 CSS 样式(人家只有一个 js 文件嘛)。我觉得官网提供的 Demo 的外观设计就非常不错,可以供大家参考。

    其他教程

    Dropzone 的作者在插件的 GitHub Wiki 页面上提供了很多额外教程,非常好,也推荐大家看一看。

    这里我只翻译一部分我觉得常用的教程的标题:

    1. 如何显示服务器返回的错误信息?

    2. 如何在所有文件上传完毕时得到通知?

    3. 如何显示出已经保存在服务器上的文件?

    4. 自己实现删除文件时的提示功能

    5. 为文件提供自定义缩略图

    6. 点击一个按钮再上传所有文件

    7. 点击一个按钮删除所有文件

    8. 把 Dropzone 放到一个已存在的表单中

    更多有关Dropzone的信息请参考官网:http://www.dropzonejs.com/
    原文:http://www.helloweba.com/view-blog-393.html


    ↓ 查看全文

    文件拖拽上传插件dropzone.js由懒人建站收集整理,您可以自由传播,请主动带上本文链接

    懒人建站就是免费分享,觉得有用就多来支持一下,没有能帮到您,懒人也只能表示遗憾,希望有一天能帮到您。

    文件拖拽上传插件dropzone.js-最新评论