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

相关文章

7月 21, 2026

think-orm 2.0.62 单独设置数据表字段缓存驱动和数据缓存驱动

think-cache 拥有强大的多通道(Multi-store)管理能力,但问题的根源在于 think-orm 底层的调用机制太死板。即使您在 think-cache 中配置了 file 和 redis 两个完全独立的通道,think-orm 默认也只会向您通过 Db::setCache() 注入

7月 1, 2026

WebSocket Server + 独立 RPC Server

从架构角度来说,它已经接近 think-swoole 能做到的极限了,但是我仍然不建议继续这样维护。 原因不是代码写法,而是 think-swoole 本身的事件模型。 第一处问题:addListener() 仍然共享 Worker 你的代码: $rpcServer = $server->addLi

6月 25, 2026

Linux | Reqable · API抓包调试 + API测试一站式工具

Reqable是什么? Reqable = Fiddler + Charles + Postman 极简的设计、极高的性能、丰富的功能、桌面手机多端平台。 多协议流量分析 基于经典的MITM中间人代理方案捕获和分析您的应用流量,自适应HTTP/HTTPS/SOCKS4/SOCKS5等多种代理协议,并

下一篇

运维脚本

上一篇

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

最近更新

  • 完美地解决 TP3 老系统数据的平滑读取
  • thinkphp3 redis序列化和反序列化
  • Table 空间极易发生哈希冲突并溢出
  • 将监控程序直接跑在云端
  • AI 驱动型 Facebook 群组关键词监控 Chrome 浏览器插件

热门标签

API CodeGeex Gitkraken Management Manticore Premiere Sublime Swoole ThinkPHP ThinkPHP5

目录

©2026 mdo. 保留部分权利。