Dropzone:动态更改acceptedFiles

我正在尝试更改先前创建的Dropzone的acceptedFiles选项。

这是我设置选项的方式:

$myDropzone.options.acceptedFiles = '.jpg, .png'; 

这是生成的Dropzone:

 var $myDropzone = $("#my-dropzone"); $myDropzone.dropzone({ maxFiles: 100, maxFilesize: 32, acceptedFiles: ".jpg"}); 

产生的错误是:

TypeError:$ myDropzone.options未定义

更新:

好像这样没有运行任何错误:

 $myDropzone.options = { acceptedFiles: '.jpg, .png' }; 

但是接受新文件类型也没有变化。

这里是游乐场的例子: http : //codepen.io/anon/pen/GqqLGo

使用Dropzone文档中提到的accept回调函数可以正常工作,但它不会限制用户文件资源管理器中显示的文件类型。 如果文件没有可接受的文件扩展名,它只会在用户选择后丢弃该文件。 而是,完成以下步骤。

  1. 更改代码中某处隐藏输入的accept属性,以便在初始化dropzone之后但在用户可以使用dropzone之前触发它。 这将限制用户可以选择的文件类型。

     $('.dz-hidden-input').attr('accept', '.pdf, .doc, .docx'); var mediaType = 'document'; 
  2. 在用户添加文件后更改acceptedFiles选项以告知Dropzone可以接受哪些文件类型。 从技术上讲,这可以添加到发送文件之前触发的任何Dropzone事件回调中。

     $('#dropzone').dropzone({ acceptedFiles: 'image/*', init: function () { this.on('addedfile', function (file, xhr, formData) { if (mediaType == 'document') { this.options.acceptedFiles = '.pdf, .docx, .doc'; } }); } }); 

我自己最终使用了这个

 $("input").each(function() { var type = $(this).attr('type'); if(type == "file") { $(this).attr("accept", ".pdf"); } }); 

您无法动态更改属性acceptedFiles。 但你可以这样做:

 var acceptedTypes = ['jpg','png'] $('#dropzone').dropzone({ url: url, accept: function(file, done) { if ($.inArray(file.name.slice(-3), acceptedTypes ) >= 0) { //accepted file done(); } else { //Unaccepted file revert this.removeFile(file); } } }); 

$myDropzone是一个jQuery-Resultset而不是Dropzone实例。

在Dropzone的网页上,您可以在2.0版附近找到此信息:

另一件事情是,Dropzone不再将其实例存储在元素的data属性中。 因此,要为元素获取Dropzone,请执行以下操作:

 // DEPRECATED, do not use: $("#my-dropzone").data("dropzone"); // won't work anymore // Do this now: Dropzone.forElement(element); // Providing a raw HTMLElement // or Dropzone.forElement("#my-dropzone"); // Providing a selector string. 

如果要访问分配给给定元素的dropzone元素,则需要使用Dropzone.forElement(element);

要访问或更改jQuery结果集中元素的选项,您需要这样做:

 Dropzone.forElement($myDropzone.get(0)).options.acceptedFiles = '.jpg, .png'; 

更改所需类型的2°参数:

 myDropzone.hiddenFileInput.setAttribute("accept", '.png,.jpg');