avatar

mdo

Hello

  • 首页
  • 知识库
  • 归档
  • 标签
  • 关于
主页 dropzonejs使用示例
文章

dropzonejs使用示例

发表于 2026-04-2 更新于 2026-04- 2
作者 mdo
8~10 分钟 阅读

DropzoneJS是一个提供文件 拖拽 上传并且提供图片预览的开源 类 库.

文档地址

下载 dropzone.js

然后引入CSS和JS

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

代码示例

`<!DOCTYPE HTML>
<html>
  <head>
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
    <title>上传图片</title>
    <link type="text/css" rel="stylesheet" href="/css/dropzone.min.css"/>
    <script type="text/javascript" src="/common/jquery-1.11.2.min.js"></script>
    <script type="text/javascript" src="/js/dropzone.min.js"></script>
    <style type="text/css"> body{min-width:auto;}
        .dropzone{padding:0;height:400px;overflow:auto}
        form{margin:0;}
        .dropzone .dz-preview {margin:10px;}
        .dropzone .dz-preview .dz-image{width:108px;height:108px;}
        .dropzone .dz-message{margin: 14em 0;} </style>
  </head>
<body>
  <form action="/img/post" class="dropzone dz-clickable">
    <div class="dz-message needsclick">&nbsp;将文件夹拖拽到框内或点击框内选择图片</div>
  </form>
  <div style="text-align:center;padding-top:10px">
      <button id="uploadAll" type="button">确认上传</button>
  </div>
</body>
<script type="text/javascript"> var picNum = 0;
    Dropzone.autoDiscover = false;
    jQuery(document).ready(function() {
        var myDropzone = new Dropzone(".dropzone", {
            url: '/img/post',
            autoProcessQueue:false,
            parallelUploads:30,
            timeout:50000,
            addRemoveLinks: true,
            dictRemoveFile: '删除'
        })

        $('#uploadAll').on('click',function(e){
            if(picNum < 1){
                alert('没有需要上传的图片');
                return false;
            }

            var limitList = [6,8,12,24];
            if(!limitList.includes(picNum)){
                alert('上传图片需要是6张,8张,12张或者24张,如果不足请补全,如果多余请删除');
                return false;
            }

            uploadList = uploadList.sort();

            $("#uploadAll").attr("disabled", true);

            myDropzone.processQueue();

        });

        myDropzone.on("success", function() {
            picNum--;
            if(picNum == 0){
                picNum = 0;

            }
        });

        var uploadList = [];
        var isDelFile = true;


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

            var index = uploadList.indexOf(file.name);
            if(index * 1 !== -1){
                alert('文件已上传,请重新上传其他文件');

                isDelFile = false;
                myDropzone.removeFile(file);
                return false;
            }
            console.log('新增文件');
            uploadList.push(file.name)
            picNum++;
        });


        myDropzone.on("removedfile", function(file) {
            if(isDelFile){
                console.log('手动删除');
                var index = uploadList.indexOf(file.name);
                if(index * 1 !== -1){
                    uploadList.splice(index, 1);
                    picNum--;
                    return false;
                }
            }else{

                console.log('文件上传重复删除');
                isDelFile = true;
            }
        });


        myDropzone.on("sending", function(file, xhr, formData) {

            var index = uploadList.indexOf(file.name);
            formData.append('index', index);    
            formData.append('total', picNum);  
        });
    }); </script>
</html>` 
知识库
dropzonejs 示例
许可协议:  CC BY 4.0
分享

相关文章

10月 7, 2026

比尔盖茨的智慧:想多赚钱,就每天循环做这3件事

我们总有一种非常固执的错觉,认为那些站在财富金字塔顶端的人,必然拥有某种超越常人的特异功能。我们在脑海中给比尔盖茨这样的大佬描绘了一幅极其悲壮的奋斗画像。大家总觉得,他之所以能富可敌国,肯定是因为他每天只睡三个小时,同时对着八个电脑屏幕疯狂敲击键盘,每一秒钟都在做出价值几亿美金的生死抉择。 为了模仿

9月 28, 2026

程序员越想创业,越不要急着动手

一个能源方面的前辈找到我,希望通过我把一些人工的工作 AI 自动化。 能源方面我不懂,找 Gemini 聊完发现这个是可以复制的,非常兴奋。我跟老婆说,这个项目做好以后可以做成平台,推广到其他公司,你就等着做总裁夫人吧! 她听完以后跟我说,这个项目还是太定制化,和我之前做的一个项目很像。 那个项目一

9月 25, 2026

忍了一年多,我终于对i18n下手了过去一年,我主要参与国际机票业务的开发工作,因此每天都要和多语言(i18n)打交道

前言 大家好,我是奈德丽。 过去一年,我主要参与国际机票业务的开发工作,因此每天都要和多语言(i18n)打交道。熟悉我的朋友都知道,我这个人比较“惜力”(并不是,实际上只是忍不下去了),对于重复笨拙的工作非常抵触,于是,我开始思考如何优化团队的多语言管理模式。 痛点背景 先说说我们在机票项目中遇到的

下一篇

运维脚本

上一篇

关联表字段(例如 user_name)直接平铺在主表的数据列表

最近更新

  • 比尔盖茨的智慧:想多赚钱,就每天循环做这3件事
  • iOS 侧载(Sideloading)工具
  • 程序员越想创业,越不要急着动手
  • 注册 Chat Participant
  • 中秋给在外游子的一封信

热门标签

API CodeGeex Coding Cursor DeepSeek Docker Gitkraken Harness Laravel Management

目录

©2026 mdo. 保留部分权利。