dropzone多文件上传

一、文件引入,具体修改对应的路劲

下载所需dropzone文件的路径:dropzone文件

<link rel="stylesheet" type="text/css" href="../static/css/dropzone.css" href="@{/static/css/dropzone.css}" />
 <script src="../static/libs/jquery.min.js" src="@{/static/libs/jquery.min.js}" type="text/javascript"></script>
 <script src="../static/plugins/dropzone/dropzone.js" src="@{/static/plugins/dropzone/dropzone.js}" type="text/javascript"></script>

二、html代码

<body>
<div class="form-group">
    <div id="dropz" class="dropzone">
    </div>
</div>
<input type="hidden" name="file" ng-model="file_id" id="file_id"/>
<div id="imgs" style="padding: 5px 10px 10px 5px;text-align: center;">
</div>
</body>

三、js代码

    Dropzone.autoDiscover = false;
    var myDropzone = new Dropzone("#dropz", {
        autoProcessQueue: true, //自动上传
        url: "/upload",//文件提交地址
        method:"post",  //也可用put
        paramName:"file", //默认为file
        maxFiles:10,//一次性上传的文件数量上限
        maxFilesize: 1024, //文件大小,单位:MB
        acceptedFiles: ".jpg,.gif,.png,.jpeg", //上传的类型
        uploadMultiple: true,
        addRemoveLinks:true,
        parallelUploads: 1,//一次上传的文件数量
        //previewsContainer:"#preview",//上传图片的预览窗口
        dictDefaultMessage:'拖动文件至此或者点击上传',
        dictMaxFilesExceeded: "您最多只能上传5个文件!",
        dictResponseError: '文件上传失败!',
        dictInvalidFileType: "文件类型只能是*.jpg,*.gif,*.png,*.jpeg。",
        dictFallbackMessage:"浏览器不受支持",
        dictFileTooBig:"文件过大上传文件最大支持.",
        dictRemoveLinks: "删除",
        dictCancelUpload: "取消",
        init:function(){
            this.on("addedfile", function(file) {
                //上传文件时触发的事件
                document.querySelector('div .dz-success-mark').style.display = 'block';
            });
            this.on("success",function(file,data){
                
                
                //上传成功触发的事件
                console.log('ok');
//              angular.element(appElement).scope().file_id = data.data.id;
                document.querySelector('div .dz-success-mark').style.display = 'block';
            });
            this.on("error",function (file,data) {
                //上传失败触发的事件
                console.log('fail');
                var message = '';
                //lavarel框架有一个表单验证,
                //对于ajax请求,JSON 响应会发送一个 422 HTTP 状态码,
                //对应file.accepted的值是false,在这里捕捉表单验证的错误提示
                if (file.accepted){
                    $.each(data,function (key,val) {
                        message = message + val[0] + ';';
                    })
                    //控制器层面的错误提示,file.accepted = true的时候;
                    alert(message);
                }
            });
            this.on("removedfile",function(file){
                //删除文件时触发的方法
//              var file_id = angular.element(appElement).scope().file_id;
//              if (file_id){
//                  $.post('/admin/del/'+ file_id,{'_method':'DELETE'},function (data) {
//                      console.log('删除结果:'+data.message);
//                  })
//              }
//              angular.element(appElement).scope().file_id = 0;
                document.querySelector('div .dz-default').style.display = 'block';
            });
        }
    });

注意:二里面的<div id="dropz" class="dropzone"> 的id值和三里面的new Dropzone("#dropz" 的值一致才可以初始化;

另里面有

maxFiles:10,//一次性上传的文件数量上限
parallelUploads: 1,//一次上传的文件数量

这两个属性,设置值的时候一定得注意,是有牵连的,也就是说可以解决多个文件上传到后台的问题;如果你选择了多个文件,但是调试的时候发现后台就只传了一个文件,那么就试试这个值的正确配置;上面的值是有效的,规律可以自己去慢慢研究;

四、后台java代码:

    @ResponseBody
    @PostMapping("/upload")
    
    public R upload(@RequestPart(name = "file",required = false)MultipartFile file){
        R r = uploadFile(file);
        return R.ok(r);
    }

public R uploadFile(MultipartFile file){
        FileFeignApi fileUploadResource = Feign.builder()
                .decoder(new JacksonDecoder())
                .encoder(new FeignSpringFormEncoder()) //这里没有添加decoder了
                .target(FileFeignApi.class,"http://127.0.0.1:8087");
        return fileUploadResource.uploadSimple(file);
    }

至于具体流的后台实现可以去搜一下;

这里主要是说前段的代码,好了,基本就可以运行了;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您好!对于在Django中使用Dropzone进行文件上传,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装了Django和Dropzone插件。您可以使用pip进行安装,如下所示: ``` pip install django pip install django-dropzone ``` 2. 在您的Django项目的settings.py文件中,将'dropzone'添加到INSTALLED_APPS中: ```python INSTALLED_APPS = [ ... 'dropzone', ... ] ``` 3. 在您的HTML模板文件中,添加Dropzone的CSS和JavaScript文件。您可以在Dropzone的官方网站上下载这些文件,然后将它们放在您的静态文件夹(如static/css和static/js)中。然后,在您的HTML模板文件中引入这些文件: ```html {% load static %} <link rel="stylesheet" type="text/css" href="{% static 'css/dropzone.min.css' %}"> <script src="{% static 'js/dropzone.min.js' %}"></script> ``` 4. 在您的HTML模板文件中,添加一个表单元素,并指定Dropzone的容器元素。例如: ```html <form action="{% url 'upload' %}" method="post" class="dropzone" id="myDropzone"> {% csrf_token %} </form> ``` 请注意,这里的'action'属性指定了上传文件时要执行的URL。您需要根据自己的项目设置正确的URL。 5. 在您的Django项目中,创建一个视图函数来处理文件上传请求。例如,您可以在views.py文件中添加以下代码: ```python from django.shortcuts import render def upload(request): if request.method == 'POST': uploaded_file = request.FILES['file'] # 获取上传的文件对象 # 处理上传的文件,例如保存到服务器或其他操作 return render(request, 'upload_success.html') return render(request, 'upload.html') ``` 在这个示例中,我们假设您只上传了一个文件,并将其保存到服务器。您可以根据自己的需求进行更改。 6. 创建一个名为'upload_success.html'的HTML模板文件,用于显示文件上传成功的页面。 以上就是使用Django和Dropzone进行文件上传的基本步骤。您可以根据自己的需求进行进一步的定制和扩展。希望对您有所帮助!如果您有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焱墩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值