Dropzone.js - 如何在上传文件后向文件对象添加新属性

时间:2015-10-07 22:53:06

标签: javascript jquery file-upload dropzone.js

我正在使用dropzone和PHP来上传和删除文件。当我加载上传页面时,我创建了一些带有以下参数的模拟文件:名称,大小,缩略图和ID。使用预先上传的数据设置此模拟。

所以当有人点击删除文件按钮时,我会调用删除图像的php方法。

我的问题是当用户上传文件并尝试删除它而不加载页面时。当它发生时,dropzone文件对象就不能改变。

我正在尝试:

var dropZone3 = new Dropzone("#file3",{
                    init: function() {
                        this.on('success', function (file) {
                            console.log(file);
                            file['test'] = 'test';
                            file.test = 'test';
                            console.log(file);
                        })
                    },
                    paramName: 'file3',
                    autoProcessQueue:true,
                    uploadMultiple: false,
                    parallelUploads: 1,
                    maxFiles: 3,
                    maxFilesize: 5,
                    addRemoveLinks: true

我的问题是第一个console.log和第二个成功函数init中的内容显示了同一个文件。

任何人都知道如何修复它?

提前谢谢。

2 个答案:

答案 0 :(得分:5)

可以直接向file对象添加属性(dropzone v4.3.0)

var dropZone = new Dropzone(document.querySelector('.js-dropzone'), {
  url: '/file/upload'
});

dropZone.on('success', function (file, response) {
  var res = JSON.parse(response);

  if (res.result == true) {
    file.test = 'test';
    file.id = res.id;
  }
});       

答案 1 :(得分:1)

不要认为您可以在已经上传的文件对象中添加属性,但您可以在accept属性之前添加它:

var dropZone3 = new Dropzone("#file3", {
    url: "upload.php",
    init: function () {
        this.on('success', function (file) {
            console.log(file);
        })
    },
    accept: function(file, done) {
        file.test = "test";
        return done();
    },
    paramName: 'file3',
    autoProcessQueue: true,
    uploadMultiple: false,
    parallelUploads: 1,
    maxFiles: 3,
    maxFilesize: 5,
    addRemoveLinks: true
});