1. html文件

dropzone的原理是模拟表单来上传文件,html中的元素有多重形式。

  1. 可以建立一个form表单:

    1
    2
    3
    <form id="dropz" action="/upload.php" enctype="multipart/form-data">
        <input type="file" name="file">
    </form>

  2. 也可以不用表单的形式,直接用一个div
    1
    <div id="dropz"></div>

2.引入css文件

引入dropzone.min.css之后会有更漂亮的外观;

然后可以自己添加些外观样式覆盖它,如:

1
2
3
4
5
6
7
8
9
10
11
12
<style>
        #filedropzone{
            width: 900px;
            height: 220px;
            margin-left: 200px;
            margin-top: 100px;
            border: 3px dashed green;
            border-radius: 2%;
            box-shadow: 3px 3px 5px #888888;
        }
    </style>

  

3.js文件

必须配置js才能上传 
1.如果没有引入jquery:

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

2.如果引入了jquery:

1
$("#dropz").dropzone({url: "/upload"})
常用的配置项:
  • url : 必要参数,文件的上传地址;
  • maxFiles : 默认为null,可以指定为一个数值,限制最多文件数量。
  • maxFilesize : 限制文件的大小,单位是MB;
  • acceptedFiles : 允许上传的文件类型,文件扩展名以逗号隔开,格式见实例;
  • autoProcessQueue : 默认为true,即拖入文件立即自动上传;如果需要在上传之前有一些选择的操作,然后手动上传,可以把该属性设置为false,然后手动点击按钮上传;
  • paramName : 相当于<input>元素的name属性,默认为file。
提示文本:
  • dictDefaultMessage : 没有任何文件被添加时的提示文本;
  • dictFallbackMessage:Fallback 情况下的提示文本。
  • dictInvalidInputType:文件类型被拒绝时的提示文本。
  • dictFileTooBig:文件大小过大时的提示文本。
  • dictCancelUpload:取消上传链接的文本。
  • dictCancelUploadConfirmation:取消上传确认信息的文本。
  • dictRemoveFile:移除文件链接的文本。
  • dictMaxFilesExceeded:超过最大文件数量的提示文本。
添加监听事件:
1
2
3
4
5
6
7
$("#dropz").dropzone({
    init: function() {
        this.on("addedfile", function(file) {
            // actions...
        });
    }
});

  

没有添加jquery时:

1
2
3
dropz.on("addedfile", function(file) {
    // actions...
});

常用事件:
  • addedfile : 添加文件是发生
  • removefile : 手动从服务器删除文件时发生
  • success : 上传成功后发生
  • complete:当文件上传成功或失败之后发生。
  • canceled:当文件在上传时被取消的时候发生。
  • maxfilesreached:当文件数量达到最大时发生。
  • maxfilesexceeded:当文件数量超过限制时发生。
  • totaluploadprogress : 文件上传中的返回值,第一个参数为总上传进度(0到100),第二个为总字节数,第三个为总上传字节数,利用这几个参数,可计算出上传速度,和剩余上传时间;

html文件demo

    <link rel="stylesheet" href="/static/plugins/dropzone/dropzone.css"><div id="upload_div"><p>请上传您的代码(如包含文件夹需要打包后再上传)</p><form id="filedropzone" method="post" action="/upload" class="dropzone dz-clickable" ><div class="dz-default dz-message"><div class="dz-icon icon-wrap icon-circle icon-wrap-md"><i class="fa fa-cloud-upload fa-3x"></i></div><div><p class="dz-text">把打包后的代码拖放到这里</p><p class="text-muted">最多可上传2张照片</p></div></div></form></div><script src="/static/plugins/dropzone/dropzone.js"></script><script>$(document).ready(function () {Dropzone.options.filedropzone = {url:"{{ request.path }}",paramName: "file", // The name that will be used to transfer the filemaxFilesize: 1, // MB,addRemoveLinks:true,maxFiles:5,uploadMultiple:true,accept: function(file, done) {if (! file.name.endsWith(".zip") ) {alert("只能上传.zip格式的压缩包")done("文件为上传")myDropzone.removeFile(file);}else { done(); }}};Dropzone.autoDiscover = false;myDropzone = new Dropzone("#filedropzone");myDropzone.on("addedfile", function(file) {/* Maybe display some more file information on your page */});myDropzone.on("success", function(file,response) {/* Maybe display some more file information on your page */console.log('filex upload done...', response);} )})</script>

  

  

  

完整示例:

 

#urls.pyfrom app01 import viewsurlpatterns = [url(r'^admin/', admin.site.urls),url(r'^test/', views.dropzoneTest),
]#views.pyfrom django.shortcuts import renderdef dropzoneTest(request):if request.is_ajax():file = request.FILES.get('file')with open('file.jpg','wb') as f:for line in file:f.write(line)return render(request,'dropzoneTest.html')#dropzoneDemo.html<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>{% load static %}<link rel="stylesheet" href="{% static 'dropzone.css' %}"><script src="{% static 'jquery-3.2.1.min.js' %}"></script><script src="{% static 'dropzone.js' %}"></script>
</head>
<body>
<p>请上传身份照正反面照片</p><form id="filedropzone" method="post" action="{{ request.path }}" class="dropzone dz-clickable" >{% csrf_token %}<div class="dz-default dz-message"><div class="dz-icon icon-wrap icon-circle icon-wrap-md"><i class="fa fa-cloud-upload fa-3x"></i></div><div><p class="dz-text">把证件信息拖放到这里</p><p class="text-muted">最多可上传2张照片</p></div></div></form><!--------------------------------------------------------------->
<script>
$(document).ready(function () {$("#filedropzone").dropzone({url: "{{ request.path }}",maxFiles: 5,maxFilesize: 1024,acceptedFiles: ".jpg,.jpeg,.doc,.docx,.ppt,.pptx,.txt,.avi,.pdf,.mp3,.zip",autoProcessQueue: false,paramName: "file",dictDefaultMessage: "拖入需要上传的文件",init: function () {var myDropzone = this, submitButton = document.querySelector("#qr"),cancelButton = document.querySelector("#cancel");myDropzone.on('addedfile', function (file) {//添加上传文件的过程,可再次弹出弹框,添加上传文件的信息});myDropzone.on('sending', function (data, xhr, formData) {//向后台发送该文件的参数formData.append('watermark', jQuery('#info').val());});myDropzone.on('success', function (files, response) {//文件上传成功之后的操作});myDropzone.on('error', function (files, response) {//文件上传失败后的操作});myDropzone.on('totaluploadprogress', function (progress, byte, bytes) {//progress为进度百分比$("#pro").text("上传进度:" + parseInt(progress) + "%");//计算上传速度和剩余时间var mm = 0;var byte = 0;var tt = setInterval(function () {mm++;var byte2 = bytes;var remain;var speed;var byteKb = byte / 1024;var bytesKb = bytes / 1024;var byteMb = byte / 1024 / 1024;var bytesMb = bytes / 1024 / 1024;if (byteKb <= 1024) {speed = (parseFloat(byte2 - byte) / (1024) / mm).toFixed(2) + " KB/s";remain = (byteKb - bytesKb) / parseFloat(speed);} else {speed = (parseFloat(byte2 - byte) / (1024 * 1024) / mm).toFixed(2) + " MB/s";remain = (byteMb - bytesMb) / parseFloat(speed);}$("#dropz #speed").text("上传速率:" + speed);$("#dropz #time").text("剩余时间" + arrive_timer_format(parseInt(remain)));if (bytes >= byte) {clearInterval(tt);if (byteKb <= 1024) {$("#dropz #speed").text("上传速率:0 KB/s");} else {$("#dropz #speed").text("上传速率:0 MB/s");}$("#dropz #time").text("剩余时间:0:00:00");}}, 1000);});submitButton.addEventListener('click', function () {//点击上传文件myDropzone.processQueue();});cancelButton.addEventListener('click', function () {//取消上传myDropzone.removeAllFiles();});}});
//剩余时间格式转换:function arrive_timer_format(s) {var t;if (s > -1) {var hour = Math.floor(s / 3600);var min = Math.floor(s / 60) % 60;var sec = s % 60;var day = parseInt(hour / 24);if (day > 0) {hour = hour - 24 * day;t = day + "day " + hour + ":";}else t = hour + ":";if (min < 10) {t += "0";}t += min + ":";if (sec < 10) {t += "0";}t += sec;}return t;}
})
</script>
</body>
</html>

  

转载于:https://www.cnblogs.com/shuai1991/p/11072077.html

DropZone(文件上传插件)相关推荐

  1. ajax 批量上传图片插件,jQuery多文件上传插件jquery.imageuploader.js

    插件描述:jQuery多文件上传插件jquery.imageuploader.js,可以同时上传多个文件并支持拖拽上传 jquery.imageuploader.js 一款jquery多文件上传插件. ...

  2. jquery 文件上传插件_10个jQuery文件上传插件

    jquery 文件上传插件 这篇热门文章于2016年7月更新,以反映文件上传插件的当前状态. 有关旧文章的评论已删除. 使用Ajax实施文件上传可能非常困难,特别是如果您需要拖放支持,图像预览或进度条 ...

  3. js插件---IUpload文件上传插件(包括图片)

    js插件---IUpload文件上传插件(包括图片) 一.总结 一句话总结:上传插件找到真正上传位置的代码,这样就可以知道整个上传插件的逻辑了, 找资料还是github+官方 1.如何在js中找到真正 ...

  4. fileupload的回调方法_jQuery File Upload文件上传插件使用详解

    本篇教程介绍了jQuery File Upload文件上传插件使用详解,希望阅读本篇文章以后大家有所收获,帮助大家对jQuery的理解更加深入. < jQuery File Upload 是一个 ...

  5. jquery文件上传插件|进度条

    jquery文件上传插件|进度条 一.Uploadify 官网:http://www.uploadify.com/ 下载地址:http://down.51cto.com/data/577863 详细参 ...

  6. jQuery 文件上传插件:uploadify、swfupload

    jQuery 文件上传插件: uploadify.swfupload

  7. 20+ 个很棒的 jQuery 文件上传插件或教程(此文值得“推荐”和“收藏”)

    文件上传是网站很常见的功能之一,通过使用 jQuery 可以让上传过程更加人性化,更好的用户体验.本文介绍20个jQuery的文件上传插件,其中有一些是教程. 1. Plupload Plupload ...

  8. uploadify多文件上传插件

    这个插件是兼容IE8及以上版本的,实现了基本功能,底部有下载连接 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transiti ...

  9. jquery uploadify 多文件上传插件 使用经验

    2019独角兽企业重金招聘Python工程师标准>>> Uploadify 官网:http://www.uploadify.com/ 一.如何使用呢? 官网原文:http://www ...

  10. bootstrap File Input 多文件上传插件使用记录(二)删除原文件

    在上一篇文章中,主要介绍了file input插件的初始化和多文件同步上传到服务器的相关配置等.这篇主要介绍file input插件的编辑等. 使用场景: 在后台管理框架中,一条数据中包含不固定的多张 ...

最新文章

  1. Java OOP(Object Oriented Programming)个人理解及总结
  2. SQLHELPER C#
  3. 信息安全系统设计基础第十五周总结
  4. mysql delimiter 作用
  5. 分页插件--根据Bootstrap Paginator改写的js插件
  6. 行末没有空格c语言,新人提问:如何将输出时每行最后一个空格删除
  7. 设置DIV半透明CSS代码:
  8. mysql空指针异常处理_mysql 查询空指针异常
  9. 天锐绿盾屏幕监控,违规操作全记录
  10. DirectShow 开启摄像头
  11. 全网最详细的Yolov3训练Caltech Pedestrain数据集并绘制fppi miss rate图
  12. 描述十二个异性追求者的拓展
  13. Dima and Salad 01背包变形
  14. 《东周列国志》第八十一回 美人计吴宫宠西施 言语科子贡说列国
  15. margin:0 auto是什么意思
  16. 沈阳桃仙机场停车费一天多少钱,沈阳桃仙机场停车怎么收费
  17. 【数据结构】B树(B-树)和B+树
  18. RDD:断点回归可以加入控制变量吗?
  19. 使用红外传感器和Arduino制作数字转速表测量RPM
  20. 赢在下班后,告别一无所有

热门文章

  1. VC++使用ADO连接SQL Server数据库
  2. Visual Studio 2008 + Visual Assist X的CUDA2.3编译环境设置[转]
  3. python爬虫多久能学会-不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据...
  4. python手机版下载3.7.2-QPython - Python for Android
  5. python代码块-python小数据池,代码块的最详细、深入剖析
  6. python语言入门p-python初学者怎么入门
  7. 简单python画圣诞树图片-圣诞节!教你用 Python 画棵圣诞树
  8. python怎么画简单图片-小白艰难的Python图像的绘制
  9. python pdf-浅谈Python处理PDF的方法
  10. python入门到精通需要学多久-Python零基础入门到精通:一个月就够了