Dropzonejs触发错误并取消上传

时间:2017-08-01 13:01:32

标签: javascript dropzone.js

我使用Dropzonejs,我想做的事情基本上很简单。但我找不到任何关于它的文章。

因此,在发送文件时,我们会在令人讨厌的.exe和.php文件上触发错误。 dropzonejs接口显示X和错误消息。这是对的。问题是它仍然被抛入成功事件,并被上传。

uploader.on("sending", function (file, xhr, data) {

    var aDeny = [ // deny file some extensions by default
        'application/x-msdownload',
        'text/php'
    ];

    if($.inArray(file.type, aDeny) !== -1) {
        this.defaultOptions.error(file, 'File not allowed: ' + file.name);
        return false;
    }
});

Evil.exe仍会出现在此成功事件中并上传。响应只有一个文件路径字符串,file.status成功。

uploader.on('success', function (file, response) {

    getData({'dostuff'});

    return file.previewElement.classList.add("dz-success");
});

所以在我发送'事件,如何防止文件出现在成功事件中?

更新:

谢谢!这就是我最终需要的:

var aDeny = [ // deny file some extensions by default
    'application/x-msdownload',
    'text/php'
];

Dropzone.options.uploadWidget = {
    // more config...
    accept: function (file, done) {
        if ($.inArray(file.type, aDeny) !== -1) {
            done("This file is not accepted!");
        }
        else {
            done();
        }
    }
}

1 个答案:

答案 0 :(得分:2)

我首先要检查服务器端上的文件类型,以防止出现任何问题。

然后使用 Dropzone 过滤文件类型,您可以使用:

  

accept的默认实现检查文件的mime类型或   针对此列表的扩展。这是一个以逗号分隔的mime列表   类型或文件扩展名。

     

例如:image / *,application / pdf,.psd

     

如果Dropzone可点击,此选项也将用作接受   隐藏文件输入的参数也是如此。

<强>示例:

var myDropzone = new Dropzone("div#myId", { 
    url: "/file/post",
    acceptedFiles: 'application/x-msdownload,text/php'
});
  

将文件和完成函数作为参数获取的函数。

     

如果在没有参数的情况下调用done函数,则文件为   &#34;接受&#34;并将被处理。如果您传递错误消息,则   文件被拒绝,将显示错误消息。这   如果文件太大或不匹配,则不会调用函数   哑剧类型。

<强>示例:

Dropzone.options.myAwesomeDropzone = {
  paramName: "file", // The name that will be used to transfer the file
  maxFilesize: 2, // MB
  accept: function(file, done) {
    if (file.name == "justinbieber.jpg") {
      done("This file is not accepted!");
    }
    else { done(); }
  }
};