在dropzone.js中启用复制和粘贴文件

Vik*_*ash 6 javascript jquery dropzone.js

我在用dropzone.js.我想在其中实现"复制和粘贴"功能.

我尝试的是:

Inside dropzone.js:

paste: function(e) {
    Dropzone.prototype.emit("paste");
}

Dropzone.prototype.paste = function(e) {
    var items, _ref;
    if ((e != null ? (_ref = e.clipboardData) != null ? _ref.items : void 0 : void 0) == null) {
        return;
    }
    this.emit("paste", e);
    items = e.clipboardData.items;
    if (items.length) {
        return this._addFilesFromItems(items);
    }
};
Run Code Online (Sandbox Code Playgroud)

Page level script:

<script>
    var dropZone = Dropzone.forElement('#dropzone1');
    dropZone.paste();
</script> 
Run Code Online (Sandbox Code Playgroud)

以上不是要求 paste:function(e){..}

如何纠正呢?

Joh*_*n F 10

如果您不想使用其他JS库,可以通过从粘贴事件中检索数据作为文件,相当容易地将dropzone与粘贴事件集成:

// create dropzone however you wish
var myDropzone = new Dropzone("div#element", { url: "/path/to/upload"});
// add paste event listener to the page
document.onpaste = function(event){
  var items = (event.clipboardData || event.originalEvent.clipboardData).items;
  for (index in items) {
    var item = items[index];
    if (item.kind === 'file') {
      // adds the file to your dropzone instance
      myDropzone.addFile(item.getAsFile())
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 你太棒了 (3认同)

reg*_*gie 6

这对我有用。它使用FileReaderJS 包装器。由于我不是以编程方式创建 dropzone,因此我必须在运行时使用 init() 方法存储它。

有关FileReaderJS 部分,请参见此处。

var myDropzone;

function checkUploadFile(filename) {
    //do some input checking here, if you want
    return true;
}

Dropzone.options.FileDropUploadZone = {
  paramName: "myDiv",
  maxFilesize: 3, // MB
  uploadMultiple: true,
  addRemoveLinks: true,
  acceptedFiles: 'image/*',
  maxFiles: 10,
  accept: function(file, done) {
      if (!checkUploadFile(file.name)) {

                done('Invalid file');
                myDropzone.removeFile(file);

      }
      else { done(); }
  },
  init: function() {
      myDropzone = this;
  }
};

$(document).ready(function () {
        FileReaderJS.setupClipboard(document.body, {
            accept: {
                'image/*': 'DataURL'
            },
            on: {
                load: function(e, file) {
                myDropzone.addFile(file);
                }
            }
        });
});
Run Code Online (Sandbox Code Playgroud)